Messages in this thread Patch in this message | | | Date | Mon, 14 Jun 2004 22:55:07 -0700 | From | Chris Wedgwood <> | Subject | [PATCH] stat nlink resolution fix |
| |
(As already discussed)
Linus,
Some filesystems can get overflows when their link-count exceeds 65534. This patch increases the kernels internal resolution for this and also has a check for the old-system call paths to return and error (-EOVERFLOW) as required (as suggested by Al Viro).
Signed-off-by: Chris Wedgwood <cw@f00f.org>
diff -Nru a/fs/stat.c b/fs/stat.c --- a/fs/stat.c 2004-06-14 17:40:21 -07:00 +++ b/fs/stat.c 2004-06-14 17:40:21 -07:00 @@ -131,6 +131,8 @@ tmp.st_ino = stat->ino; tmp.st_mode = stat->mode; tmp.st_nlink = stat->nlink; + if (tmp.st_nlink != stat->nlink) + return -EOVERFLOW; SET_UID(tmp.st_uid, stat->uid); SET_GID(tmp.st_gid, stat->gid); tmp.st_rdev = old_encode_dev(stat->rdev); @@ -199,6 +201,8 @@ tmp.st_ino = stat->ino; tmp.st_mode = stat->mode; tmp.st_nlink = stat->nlink; + if (tmp.st_nlink != stat->nlink) + return -EOVERFLOW; SET_UID(tmp.st_uid, stat->uid); SET_GID(tmp.st_gid, stat->gid); #if BITS_PER_LONG == 32 diff -Nru a/include/linux/stat.h b/include/linux/stat.h --- a/include/linux/stat.h 2004-06-14 17:40:21 -07:00 +++ b/include/linux/stat.h 2004-06-14 17:40:21 -07:00 @@ -60,7 +60,7 @@ unsigned long ino; dev_t dev; umode_t mode; - nlink_t nlink; + unsigned int nlink; uid_t uid; gid_t gid; dev_t rdev; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |