Skip to content

Commit f157dd6

Browse files
mssolakdave
authored andcommitted
btrfs: fix NULL dereference on root when tracing inode eviction
When evicting an inode the first thing we do is to setup tracing for it, which implies fetching the root's id. But in btrfs_evict_inode() the root might be NULL, as implied in the next check that we do in btrfs_evict_inode(). Hence, we either should set the ->root_objectid to 0 in case the root is NULL, or we move tracing setup after checking that the root is not NULL. Setting the rootid to 0 at least gives us the possibility to trace this call even in the case when the root is NULL, so that's the solution taken here. Fixes: 1abe9b8 ("Btrfs: add initial tracepoint support for btrfs") Reported-by: syzbot+d991fea1b4b23b1f6bf8@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=d991fea1b4b23b1f6bf8 Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 68d4b3f commit f157dd6

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

include/trace/events/btrfs.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ DECLARE_EVENT_CLASS(btrfs__inode,
224224
__entry->generation = BTRFS_I(inode)->generation;
225225
__entry->last_trans = BTRFS_I(inode)->last_trans;
226226
__entry->logged_trans = BTRFS_I(inode)->logged_trans;
227-
__entry->root_objectid = btrfs_root_id(BTRFS_I(inode)->root);
227+
__entry->root_objectid = BTRFS_I(inode)->root ?
228+
btrfs_root_id(BTRFS_I(inode)->root) : 0;
228229
),
229230

230231
TP_printk_btrfs("root=%llu(%s) gen=%llu ino=%llu blocks=%llu "

0 commit comments

Comments
 (0)