"chunk_size" is an unsigned int and "pos" is an unsigned long. The "& ~(chunk_size-1)" operation clears the high 32 bits unintentionally. The ALIGN() macro does the correct thing. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> diff --git a/fs/minix/dir.c b/fs/minix/dir.c index a9ed6f3..09b0c96 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -95,7 +95,7 @@ static int minix_readdir(struct file * filp, void * dirent, filldir_t filldir) char *name; __u32 inumber; - pos = (pos + chunk_size-1) & ~(chunk_size-1); + pos = ALIGN(pos, chunk_size); if (pos >= inode->i_size) goto done; -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html