Commit 9b01c350af4fb00fe2ab66ff9bf16058c50b69bd
Committed by
Linus Torvalds
1 parent
f2090d2df5
Exists in
master
and in
20 other branches
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>
Showing 1 changed file with 3 additions and 4 deletions Side-by-side Diff
mm/swapfile.c
... | ... | @@ -2136,6 +2136,8 @@ |
2136 | 2136 | atomic_inc(&proc_poll_event); |
2137 | 2137 | wake_up_interruptible(&proc_poll_wait); |
2138 | 2138 | |
2139 | + if (S_ISREG(inode->i_mode)) | |
2140 | + inode->i_flags |= S_SWAPFILE; | |
2139 | 2141 | error = 0; |
2140 | 2142 | goto out; |
2141 | 2143 | bad_swap: |
2142 | 2144 | |
... | ... | @@ -2163,11 +2165,8 @@ |
2163 | 2165 | } |
2164 | 2166 | if (name) |
2165 | 2167 | putname(name); |
2166 | - if (inode && S_ISREG(inode->i_mode)) { | |
2167 | - if (!error) | |
2168 | - inode->i_flags |= S_SWAPFILE; | |
2168 | + if (inode && S_ISREG(inode->i_mode)) | |
2169 | 2169 | mutex_unlock(&inode->i_mutex); |
2170 | - } | |
2171 | 2170 | return error; |
2172 | 2171 | } |
2173 | 2172 |