• Jeff Layton's avatar
    fix memory leak in CIFSFindNext · 6353450a
    Jeff Layton authored
    When CIFSFindNext gets back an -EBADF from a call, it sets the return
    code of the function to 0 and eventually exits. Doing this makes the
    cleanup at the end of the function skip freeing the SMB buffer, so
    we need to make sure we free the buffer explicitly when doing this.
    
    If we don't you end up with errors like this when unplugging the cifs
    kernel module:
    
    slab error in kmem_cache_destroy(): cache `cifs_request': Can't free all objects
     [<c046bdbf>] kmem_cache_destroy+0x61/0xf3
     [<e0f03045>] cifs_destroy_request_bufs+0x14/0x28 [cifs]
     [<e0f2016e>] exit_cifs+0x1e/0x80 [cifs]
     [<c043aeae>] sys_delete_module+0x192/0x1b8
     [<c04451fd>] audit_syscall_entry+0x14b/0x17d
     [<c0405413>] syscall_call+0x7/0xb
     =======================
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    6353450a
cifssmb.c 167 KB