summary refs log tree commit diff
path: root/fs/aio.c
diff options
context:
space:
mode:
authorMarc Dionne <marc.dionne@auristor.com>2019-08-22 13:28:43 +0100
committerDavid Howells <dhowells@redhat.com>2019-08-22 13:33:26 +0100
commitc4c613ff08d92e72bf64a65ec35a2c3aa1cfcd06 (patch)
tree2e5b2adfec2f534597e52aaa407802a438168ab8 /fs/aio.c
parenta5fb8e6c02d6a518fb2b1a2b8c2471fa77b69436 (diff)
downloadlinux-c4c613ff08d92e72bf64a65ec35a2c3aa1cfcd06.tar.gz
afs: Fix possible oops in afs_lookup trace event
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: 80548b03991f ("afs: Add more tracepoints")
Signed-off-by: Marc Dionne <marc.dionne@auristor.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/aio.c')
0 files changed, 0 insertions, 0 deletions