__f_setown_uid() is same as __f_setown(), except that instead of assuming the uid and euid of current process, it expects them to be passed in as parameters. This interface will be useful when checkpointing and restarting an application that has a 'file owner' specified for any of the application's open files. The uid, euid of the process setting up the owner is saved in the checkpoint image. When the application is restarted, the save uid and euid values are restored. Signed-off-by: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxxxxxxx> --- fs/fcntl.c | 13 ++++++++++--- include/linux/fs.h | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fs/fcntl.c b/fs/fcntl.c index aeab1f4..6e5d2bc 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c @@ -213,8 +213,8 @@ static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, write_unlock_irq(&filp->f_owner.lock); } -int __f_setown(struct file *filp, struct pid *pid, enum pid_type type, - int force) +int __f_setown_uid(struct file *filp, struct pid *pid, enum pid_type type, + uid_t uid, uid_t euid, int force) { int err; @@ -222,9 +222,16 @@ int __f_setown(struct file *filp, struct pid *pid, enum pid_type type, if (err) return err; - f_modown(filp, pid, type, current_uid(), current_euid(), force); + f_modown(filp, pid, type, uid, euid, force); return 0; } + +int __f_setown(struct file *filp, struct pid *pid, enum pid_type type, + int force) +{ + return __f_setown_uid(filp, pid, type, current_uid(), current_euid(), + force); +} EXPORT_SYMBOL(__f_setown); int f_setown(struct file *filp, unsigned long arg, int force) diff --git a/include/linux/fs.h b/include/linux/fs.h index ee725ff..8257b1a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1304,6 +1304,8 @@ extern void kill_fasync(struct fasync_struct **, int, int); /* only for net: no internal synchronization */ extern void __kill_fasync(struct fasync_struct *, int, int); +extern int __f_setown_uid(struct file *filp, struct pid *, enum pid_type, + uid_t uid, uid_t euid, int force); extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); -- 1.6.0.4 -- 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