mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
hippi: use ndo_siocdevprivate
The rr_ioctl uses private ioctl commands that correctly pass all data through ifr_data, which works fine in compat mode. Change it to use ndo_siocdevprivate as a cleanup. Cc: Jes Sorensen <jes@trained-monkey.org> Cc: linux-hippi@sunsite.dk Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3e7a1c7c56
commit
81a68110a2
2 changed files with 8 additions and 6 deletions
|
@ -63,7 +63,7 @@ static const char version[] =
|
|||
static const struct net_device_ops rr_netdev_ops = {
|
||||
.ndo_open = rr_open,
|
||||
.ndo_stop = rr_close,
|
||||
.ndo_do_ioctl = rr_ioctl,
|
||||
.ndo_siocdevprivate = rr_siocdevprivate,
|
||||
.ndo_start_xmit = rr_start_xmit,
|
||||
.ndo_set_mac_address = hippi_mac_addr,
|
||||
};
|
||||
|
@ -1568,7 +1568,8 @@ out:
|
|||
}
|
||||
|
||||
|
||||
static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
static int rr_siocdevprivate(struct net_device *dev, struct ifreq *rq,
|
||||
void __user *data, int cmd)
|
||||
{
|
||||
struct rr_private *rrpriv;
|
||||
unsigned char *image, *oldimage;
|
||||
|
@ -1603,7 +1604,7 @@ static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
error = -EFAULT;
|
||||
goto gf_out;
|
||||
}
|
||||
error = copy_to_user(rq->ifr_data, image, EEPROM_BYTES);
|
||||
error = copy_to_user(data, image, EEPROM_BYTES);
|
||||
if (error)
|
||||
error = -EFAULT;
|
||||
gf_out:
|
||||
|
@ -1615,7 +1616,7 @@ static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
return -EPERM;
|
||||
}
|
||||
|
||||
image = memdup_user(rq->ifr_data, EEPROM_BYTES);
|
||||
image = memdup_user(data, EEPROM_BYTES);
|
||||
if (IS_ERR(image))
|
||||
return PTR_ERR(image);
|
||||
|
||||
|
@ -1658,7 +1659,7 @@ static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
return error;
|
||||
|
||||
case SIOCRRID:
|
||||
return put_user(0x52523032, (int __user *)rq->ifr_data);
|
||||
return put_user(0x52523032, (int __user *)data);
|
||||
default:
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -835,7 +835,8 @@ static int rr_open(struct net_device *dev);
|
|||
static netdev_tx_t rr_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
static int rr_close(struct net_device *dev);
|
||||
static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
|
||||
static int rr_siocdevprivate(struct net_device *dev, struct ifreq *rq,
|
||||
void __user *data, int cmd);
|
||||
static unsigned int rr_read_eeprom(struct rr_private *rrpriv,
|
||||
unsigned long offset,
|
||||
unsigned char *buf,
|
||||
|
|
Loading…
Add table
Reference in a new issue