Linux/linux a5fb8e6fs/afs cell.c

afs: Fix leak in afs_lookup_cell_rcu()

Fix a leak on the cell refcount in afs_lookup_cell_rcu() due to
non-clearance of the default error in the case a NULL cell name is passed
and the workstation default cell is used.

Also put a bit at the end to make sure we don't leak a cell ref if we're
going to be returning an error.

This leak results in an assertion like the following when the kafs module is
unloaded:

        AFS: Assertion failed
        2 == 1 is false
        0x2 == 0x1 is false
        ------------[ cut here ]------------
        kernel BUG at fs/afs/cell.c:770!
        ...
        RIP: 0010:afs_manage_cells+0x220/0x42f [kafs]
        ...
         process_one_work+0x4c2/0x82c
         ? pool_mayday_timeout+0x1e1/0x1e1
         ? do_raw_spin_lock+0x134/0x175
         worker_thread+0x336/0x4a6
         ? rescuer_thread+0x4af/0x4af
         kthread+0x1de/0x1ee
         ? kthread_park+0xd4/0xd4
         ret_from_fork+0x24/0x30

Fixes: 989782dcdc91 ("afs: Overhaul cell database management")
Signed-off-by: David Howells <dhowells at redhat.com>
DeltaFile
+4-0fs/afs/cell.c
+4-01 files

UnifiedSplitRaw