Serge E. Hallyn [serue@xxxxxxxxxx] wrote: | Quoting Sukadev Bhattiprolu (sukadev@xxxxxxxxxxxxxxxxxx): | > Move the core functionality of fcntl_setlease() into a new function, | > do_setlease(). do_setlease() is same as fcntl_setlease() except that | > it takes an extra 'rem_lease' parameter. do_setlease() will be used | > in a follow-on patch to checkpoint/restart file-leases. | > | > Signed-off-by: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxxxxxxx> | > --- | > fs/locks.c | 27 ++++++++++++++++----------- | > include/linux/fs.h | 1 + | > 2 files changed, 17 insertions(+), 11 deletions(-) | > | > diff --git a/fs/locks.c b/fs/locks.c | > index c62ab7f..4107295 100644 | > --- a/fs/locks.c | > +++ b/fs/locks.c | > @@ -1471,17 +1471,7 @@ int vfs_setlease(struct file *filp, long arg, struct file_lock **lease) | > } | > EXPORT_SYMBOL_GPL(vfs_setlease); | > | > -/** | > - * fcntl_setlease - sets a lease on an open file | > - * @fd: open file descriptor | > - * @filp: file pointer | > - * @arg: type of lease to obtain | > - * | > - * Call this fcntl to establish a lease on the file. | > - * Note that you also need to call %F_SETSIG to | > - * receive a signal when the lease is broken. | > - */ | > -int fcntl_setlease(unsigned int fd, struct file *filp, long arg) | > +int do_setlease(unsigned int fd, struct file *filp, long arg, int rem_lease) | > { | | Note that rem_lease arg here is int, but the value you're checkpointing | and passing in is unsigned long. So userspace on 64-bit could easily | overflow that, though not sure to what end. Also putting 'unsigned long' | in the checkpoint_hdr.h is not in keeping with the rest of that file. lease_break_time is an int, so I set rem_lease to int. But the unsigned long in checkpoint_hdr.h is just wrong. I will change it __s32. Sukadev -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html