Skip to content

Commit 60caabc

Browse files
linuswNipaLocal
authored andcommitted
net: ethernet: xscale: Check for PTP support properly
In ixp4xx_get_ts_info() ixp46x_ptp_find() is called unconditionally despite this feature only existing on ixp46x, leading to the following splat from tcpdump: root@OpenWrt:~# tcpdump -vv -X -i eth0 (...) Unable to handle kernel NULL pointer dereference at virtual address 00000238 when read (...) Call trace: ptp_clock_index from ixp46x_ptp_find+0x1c/0x38 ixp46x_ptp_find from ixp4xx_get_ts_info+0x4c/0x64 ixp4xx_get_ts_info from __ethtool_get_ts_info+0x90/0x108 __ethtool_get_ts_info from __dev_ethtool+0xa00/0x2648 __dev_ethtool from dev_ethtool+0x160/0x234 dev_ethtool from dev_ioctl+0x2cc/0x460 dev_ioctl from sock_ioctl+0x1ec/0x524 sock_ioctl from sys_ioctl+0x51c/0xa94 sys_ioctl from ret_fast_syscall+0x0/0x44 (...) Segmentation fault Check for ixp46x support before calling PTP. Fixes: c14e1ec ("net: ixp4xx_eth: convert to ndo_hwtstamp_get() and ndo_hwtstamp_set()") Signed-off-by: Linus Walleij <linusw@kernel.org> Signed-off-by: NipaLocal <nipa@local>
1 parent e4b503f commit 60caabc

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/ethernet/xscale/ixp4xx_eth.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,7 @@ static int ixp4xx_get_ts_info(struct net_device *dev,
10141014
{
10151015
struct port *port = netdev_priv(dev);
10161016

1017-
if (port->phc_index < 0)
1017+
if (cpu_is_ixp46x() && (port->phc_index < 0))
10181018
ixp46x_ptp_find(&port->timesync_regs, &port->phc_index);
10191019

10201020
info->phc_index = port->phc_index;

0 commit comments

Comments
 (0)