[lkml]   [2012]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[ 039/122] locks: fix checking of fcntl_setlease argument
    From: Greg KH <>

    3.5-stable review patch. If anyone has any objections, please let me know.


    From: "J. Bruce Fields" <>

    commit 0ec4f431eb56d633da3a55da67d5c4b88886ccc7 upstream.

    The only checks of the long argument passed to fcntl(fd,F_SETLEASE,.)
    are done after converting the long to an int. Thus some illegal values
    may be let through and cause problems in later code.

    [ They actually *don't* cause problems in mainline, as of Dave Jones's
    commit 8d657eb3b438 "Remove easily user-triggerable BUG from
    generic_setlease", but we should fix this anyway. And this patch will
    be necessary to fix real bugs on earlier kernels. ]

    Signed-off-by: J. Bruce Fields <>
    Signed-off-by: Linus Torvalds <>
    Signed-off-by: Greg Kroah-Hartman <>

    fs/locks.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/fs/locks.c
    +++ b/fs/locks.c
    @@ -308,7 +308,7 @@ static int flock_make_lock(struct file *
    return 0;

    -static int assign_type(struct file_lock *fl, int type)
    +static int assign_type(struct file_lock *fl, long type)
    switch (type) {
    case F_RDLCK:
    @@ -445,7 +445,7 @@ static const struct lock_manager_operati
    * Initialize a lease, use the default lock manager operations
    -static int lease_init(struct file *filp, int type, struct file_lock *fl)
    +static int lease_init(struct file *filp, long type, struct file_lock *fl)
    if (assign_type(fl, type) != 0)
    return -EINVAL;
    @@ -463,7 +463,7 @@ static int lease_init(struct file *filp,

    /* Allocate a file_lock initialised to this type of lease */
    -static struct file_lock *lease_alloc(struct file *filp, int type)
    +static struct file_lock *lease_alloc(struct file *filp, long type)
    struct file_lock *fl = locks_alloc_lock();
    int error = -ENOMEM;

     \ /
      Last update: 2012-08-08 03:41    [W:0.026 / U:7.668 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site