• David Howells's avatar
    afs: Fix leak in afs_lookup_cell_rcu() · a5fb8e6c
    David Howells authored
    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: 989782dc ("afs: Overhaul cell database management")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    a5fb8e6c
cell.c 20.4 KB