lkml.org 
[lkml]   [2011]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 12/24] sys_swapon: use a single error label
    Date
    sys_swapon currently has two error labels, bad_swap and bad_swap_2.
    bad_swap does the same as bad_swap_2 plus destroy_swap_extents() and
    swap_cgroup_swapoff(); both are noops in the places where bad_swap_2 is
    jumped to. With a single extra test for inode (matching the one in the
    S_ISREG case below), all the error paths in the function can go to
    bad_swap.

    Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
    Tested-by: Eric B Munson <emunson@mgebm.net>
    Acked-by: Eric B Munson <emunson@mgebm.net>
    ---
    mm/swapfile.c | 7 +++----
    1 files changed, 3 insertions(+), 4 deletions(-)

    diff --git a/mm/swapfile.c b/mm/swapfile.c
    index ebc0307..96be104 100644
    --- a/mm/swapfile.c
    +++ b/mm/swapfile.c
    @@ -1918,13 +1918,13 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
    if (IS_ERR(name)) {
    error = PTR_ERR(name);
    name = NULL;
    - goto bad_swap_2;
    + goto bad_swap;
    }
    swap_file = filp_open(name, O_RDWR|O_LARGEFILE, 0);
    if (IS_ERR(swap_file)) {
    error = PTR_ERR(swap_file);
    swap_file = NULL;
    - goto bad_swap_2;
    + goto bad_swap;
    }

    p->swap_file = swap_file;
    @@ -2141,13 +2141,12 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
    error = 0;
    goto out;
    bad_swap:
    - if (S_ISBLK(inode->i_mode) && p->bdev) {
    + if (inode && S_ISBLK(inode->i_mode) && p->bdev) {
    set_blocksize(p->bdev, p->old_block_size);
    blkdev_put(p->bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
    }
    destroy_swap_extents(p);
    swap_cgroup_swapoff(p->type);
    -bad_swap_2:
    spin_lock(&swap_lock);
    p->swap_file = NULL;
    p->flags = 0;
    --
    1.7.4


    \
     
     \ /
      Last update: 2011-03-06 12:19    [W:4.033 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site