]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
cifs_atomic_open(): fix double-put on late allocation failure
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 12 Mar 2020 22:25:20 +0000 (18:25 -0400)
committerPaolo Pisati <paolo.pisati@canonical.com>
Wed, 18 Mar 2020 10:39:16 +0000 (11:39 +0100)
commite982dd8a9ed71d086d00621260541249ce3a8345
treef94aef9ac1c9a55d47f88eeec10299f502bc3231
parent7a05a20251e73ab2103e006ed96fd8472af14757
cifs_atomic_open(): fix double-put on late allocation failure

BugLink: https://bugs.launchpad.net/bugs/1867903
commit d9a9f4849fe0c9d560851ab22a85a666cddfdd24 upstream.

several iterations of ->atomic_open() calling conventions ago, we
used to need fput() if ->atomic_open() failed at some point after
successful finish_open().  Now (since 2016) it's not needed -
struct file carries enough state to make fput() work regardless
of the point in struct file lifecycle and discarding it on
failure exits in open() got unified.  Unfortunately, I'd missed
the fact that we had an instance of ->atomic_open() (cifs one)
that used to need that fput(), as well as the stale comment in
finish_open() demanding such late failure handling.  Trivially
fixed...

Fixes: fe9ec8291fca "do_last(): take fput() on error after opening to out:"
Cc: stable@kernel.org # v4.7+
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Documentation/filesystems/porting.rst
fs/cifs/dir.c
fs/open.c