link/mkdir: error link counter overrun
authorAlan Cox <alan@linux.intel.com>
Fri, 30 Jan 2015 00:26:24 +0000 (00:26 +0000)
committerAlan Cox <alan@linux.intel.com>
Fri, 30 Jan 2015 00:26:24 +0000 (00:26 +0000)
Kernel/syscall_fs2.c
Kernel/syscall_other.c

index aacfde3..5357fa6 100644 (file)
@@ -551,6 +551,11 @@ arg_t _link(void)
        if (getmode(ino) == F_DIR && esuper())
                goto nogood;
 
+       if (ino->c_node.i_nlink == 0xFFFF) {
+               udata.u_error = EMLINK;
+               goto nogood;
+       }
+
        /* Make sure file2 doesn't exist, and get its parent */
        if ((ino2 = n_open(name2, &parent2)) != NULL) {
                i_deref(ino2);
index f41475d..be2e54c 100644 (file)
@@ -125,6 +125,11 @@ arg_t _mkdir(void)
                return (-1);
        }
 
+       if (parent->c_node.i_nlink == 0xFFFF) {
+               udata.u_error = EMLINK;
+               goto nogood2;
+       }
+
        filename(name, fname);
 
        i_ref(parent);          /* We need it again in a minute */