mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 23:13:00 +00:00
sys_swapon: do only cleanup in the cleanup blocks
The only way error is 0 in the cleanup blocks is when the function is returning successfully. In this case, the cleanup blocks were setting S_SWAPFILE in the S_ISREG case. But this is not a cleanup. Move the setting of S_SWAPFILE to just before the "goto out;" to make this more clear. At this point, we do not need to test for inode because it will never be NULL. 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> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f2090d2df5
commit
9b01c350af
|
@ -2136,6 +2136,8 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
|
||||||
atomic_inc(&proc_poll_event);
|
atomic_inc(&proc_poll_event);
|
||||||
wake_up_interruptible(&proc_poll_wait);
|
wake_up_interruptible(&proc_poll_wait);
|
||||||
|
|
||||||
|
if (S_ISREG(inode->i_mode))
|
||||||
|
inode->i_flags |= S_SWAPFILE;
|
||||||
error = 0;
|
error = 0;
|
||||||
goto out;
|
goto out;
|
||||||
bad_swap:
|
bad_swap:
|
||||||
|
@ -2163,11 +2165,8 @@ out:
|
||||||
}
|
}
|
||||||
if (name)
|
if (name)
|
||||||
putname(name);
|
putname(name);
|
||||||
if (inode && S_ISREG(inode->i_mode)) {
|
if (inode && S_ISREG(inode->i_mode))
|
||||||
if (!error)
|
|
||||||
inode->i_flags |= S_SWAPFILE;
|
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
}
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user