• Marc Dionne's avatar
    afs: Fix possible oops in afs_lookup trace event · c4c613ff
    Marc Dionne authored
    The afs_lookup trace event can cause the following:
    
    [  216.576777] BUG: kernel NULL pointer dereference, address: 000000000000023b
    [  216.576803] #PF: supervisor read access in kernel mode
    [  216.576813] #PF: error_code(0x0000) - not-present page
    ...
    [  216.576913] RIP: 0010:trace_event_raw_event_afs_lookup+0x9e/0x1c0 [kafs]
    
    If the inode from afs_do_lookup() is an error other than ENOENT, or if it
    is ENOENT and afs_try_auto_mntpt() returns an error, the trace event will
    try to dereference the error pointer as a valid pointer.
    
    Use IS_ERR_OR_NULL to only pass a valid pointer for the trace, or NULL.
    
    Ideally the trace would include the error value, but for now just avoid
    the oops.
    
    Fixes: 80548b03 ("afs: Add more tracepoints")
    Signed-off-by: default avatarMarc Dionne <marc.dionne@auristor.com>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    c4c613ff
dir.c 50.6 KB