From: Hariprasad Shenai Date: Mon, 9 Feb 2015 04:17:10 +0000 (+0530) Subject: cxgb4: Fix trace observed while dumping clip_tbl X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=acde2c2d28c8afee41eb67ee1cbf9e47a3f3e475;p=linux-beck.git cxgb4: Fix trace observed while dumping clip_tbl Handle clip_tbl debugfs entry, when clip_tbl isn't allocated. In commit b5a02f503caa0837 ("cxgb4: Update ipv6 address handling api") wrong argument was passed for single_open for clip_tbl debugfs entry, which led to below trace. Fixing it. ====== call Trace: [] clip_tbl_open+0x16/0x30 [cxgb4] [] do_dentry_open+0x21a/0x370 [] vfs_open+0x49/0x50 [] do_last+0x21e/0x800 [] path_openat+0x92/0x470 [] ? rb_reserve_next_event+0xaf/0x380 [] ? rb_reserve_next_event+0xaf/0x380 [] do_filp_open+0x4a/0xa0 [] ? __alloc_fd+0xcd/0x140 [] do_sys_open+0x11a/0x230 [] ? syscall_trace_enter_phase2+0xaf/0x1b0 [] SyS_open+0x1e/0x20 [] tracesys_phase2+0xd4/0xd9 Code: 89 e5 66 66 66 66 90 48 8b 47 e0 48 8b 40 30 48 8b 40 58 c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 66 66 66 90 48 8b 47 e0 <48> 8b 40 58 c9 c3 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 RIP [] PDE_DATA+0xd/0x20 RSP CR2: 0000000000000058 ===== Signed-off-by: Hariprasad Shenai Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c b/drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c index 2b407b6a35a8..9062a8434246 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c +++ b/drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c @@ -81,6 +81,9 @@ int cxgb4_clip_get(const struct net_device *dev, const u32 *lip, u8 v6) int addr_len; int ret = 0; + if (!ctbl) + return 0; + if (v6) addr_len = 16; else diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c index a1029eecef02..d221f6b28fcd 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c @@ -1237,7 +1237,7 @@ DEFINE_SIMPLE_DEBUGFS_FILE(sensors); #if IS_ENABLED(CONFIG_IPV6) static int clip_tbl_open(struct inode *inode, struct file *file) { - return single_open(file, clip_tbl_show, PDE_DATA(inode)); + return single_open(file, clip_tbl_show, inode->i_private); } static const struct file_operations clip_tbl_debugfs_fops = {