On Mon, Jul 18, 2011 at 11:39, Kahn, Gery <geryk@xxxxxx> wrote: > On Mon, Jul 18, 2011 at 10:18, Kalle Valo <kvalo@xxxxxxxxxx> wrote: >> Kalle Valo <kvalo@xxxxxxxxxx> writes: >> >>>> After some investigation, found that ethtool's ioctl interface doesn't work >>>> at this case. >>> >>> This reminds me: I have patches for these issues but I never sent them >>> upstream. It's too late for me now, but I'll search them tomorrow (or >>> today to be exact..) and send them for testing purposes. >> >> Here's the patch I used: >> >> diff --git a/net/core/ethtool.c b/net/core/ethtool.c >> index 74ead9e..0836aa3 100644 >> --- a/net/core/ethtool.c >> +++ b/net/core/ethtool.c >> @@ -1185,7 +1185,7 @@ static int ethtool_get_regs(struct net_device *dev, char __user *useraddr) >> { >> struct ethtool_regs regs; >> const struct ethtool_ops *ops = dev->ethtool_ops; >> - void *regbuf; >> + void *regbuf = NULL; >> int reglen, ret; >> >> if (!ops->get_regs || !ops->get_regs_len) >> @@ -1198,18 +1198,24 @@ static int ethtool_get_regs(struct net_device *dev, char __user *useraddr) >> if (regs.len > reglen) >> regs.len = reglen; >> >> - regbuf = vzalloc(reglen); >> - if (!regbuf) >> - return -ENOMEM; >> + if (reglen > 0) { >> + regbuf = vzalloc(reglen); >> + if (!regbuf) >> + return -ENOMEM; >> + } >> >> ops->get_regs(dev, ®s, regbuf); >> >> ret = -EFAULT; >> if (copy_to_user(useraddr, ®s, sizeof(regs))) >> goto out; >> - useraddr += offsetof(struct ethtool_regs, data); >> - if (copy_to_user(useraddr, regbuf, regs.len)) >> - goto out; >> + >> + if (regs.len > 0) { >> + useraddr += offsetof(struct ethtool_regs, data); >> + if (copy_to_user(useraddr, regbuf, regs.len)) >> + goto out; >> + } >> + >> ret = 0; >> >> out: >> > > Tested-by: Gery Kahn <geryk@xxxxxx> > I wanted to add thank you for sending your and reviewing my patch. It is good to have you around. Gery -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html