From: Miklos Szeredi This patch fixes a signed/unsigned comparison bug found by Franco Broi after months of filesystem uptime and 2,147,483,648 performed fs operations. Since the request identifier is already 64 bits on the userspace ABI, the counter is now made 64-bit too. Signed-off-by: Miklos Szeredi Signed-off-by: Andrew Morton --- fs/fuse/dev.c | 2 +- fs/fuse/fuse_i.h | 2 +- fs/fuse/inode.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/fuse/dev.c~fuse-device-functions-request-counter-overflow-fix fs/fuse/dev.c --- devel/fs/fuse/dev.c~fuse-device-functions-request-counter-overflow-fix 2005-07-29 23:26:02.000000000 -0700 +++ devel-akpm/fs/fuse/dev.c 2005-07-29 23:26:02.000000000 -0700 @@ -676,7 +676,7 @@ static ssize_t fuse_dev_read(struct file } /* Look up request on processing list by unique ID */ -static struct fuse_req *request_find(struct fuse_conn *fc, unsigned unique) +static struct fuse_req *request_find(struct fuse_conn *fc, u64 unique) { struct list_head *entry; diff -puN fs/fuse/fuse_i.h~fuse-device-functions-request-counter-overflow-fix fs/fuse/fuse_i.h --- devel/fs/fuse/fuse_i.h~fuse-device-functions-request-counter-overflow-fix 2005-07-29 23:26:02.000000000 -0700 +++ devel-akpm/fs/fuse/fuse_i.h 2005-07-29 23:26:02.000000000 -0700 @@ -188,7 +188,7 @@ struct fuse_conn { struct list_head unused_list; /** The next unique request id */ - int reqctr; + u64 reqctr; /** Connection failed (version mismatch) */ unsigned conn_error : 1; diff -puN fs/fuse/inode.c~fuse-device-functions-request-counter-overflow-fix fs/fuse/inode.c --- devel/fs/fuse/inode.c~fuse-device-functions-request-counter-overflow-fix 2005-07-29 23:26:02.000000000 -0700 +++ devel-akpm/fs/fuse/inode.c 2005-07-29 23:26:02.000000000 -0700 @@ -275,7 +275,7 @@ static struct fuse_conn *new_conn(void) } fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; fc->bdi.unplug_io_fn = default_unplug_io_fn; - fc->reqctr = 1; + fc->reqctr = 0; } return fc; } _