History

path_openat(): fix double fput()

path_openat() jumps to the wrong place after do_tmpfile() - it has already done path_cleanup() (as part of path_lookupat() called by do_tmpfile()), so doing that again can lead to double fput().

Al Viro committed 11 years ago

Commit f15133d1 parent 766c4cb1 file · +2 −1Browse files

Unified · Split

fs/namei.c+2−1
@@ -3233,7 +3233,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, · 3232 unmodified lines
32333233
32343234 if (unlikely(file->f_flags & __O_TMPFILE)) {
32353235 error = do_tmpfile(dfd, pathname, nd, flags, op, file, &opened);
3236− goto out;
3236+ goto out2;
32373237 }
32383238
32393239 error = path_init(dfd, pathname, flags, nd);
@@ -3263,6 +3263,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, · 23 unmodified lines
32633263 }
32643264 out:
32653265 path_cleanup(nd);
3266+out2:
32663267 if (!(opened & FILE_OPENED)) {
32673268 BUG_ON(!error);
32683269 put_filp(file);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t