appletalk: handle SIOCATALKDIFADDR compat ioctl

We must not have a compat ioctl handler for SIOCATALKDIFADDR
in common code, because the same number is used in other protocols
with different data structures.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Arnd Bergmann 2009-11-06 08:09:06 +00:00 committed by David S. Miller
parent 7a229387d3
commit 2066022177
2 changed files with 7 additions and 6 deletions

View File

@ -2536,7 +2536,6 @@ HANDLE_IOCTL(SIOCSIFHWBROADCAST, dev_ifsioc)
HANDLE_IOCTL(SIOCSHWTSTAMP, dev_ifsioc) HANDLE_IOCTL(SIOCSHWTSTAMP, dev_ifsioc)
/* ioctls used by appletalk ddp.c */ /* ioctls used by appletalk ddp.c */
HANDLE_IOCTL(SIOCATALKDIFADDR, dev_ifsioc)
HANDLE_IOCTL(SIOCDIFADDR, dev_ifsioc) HANDLE_IOCTL(SIOCDIFADDR, dev_ifsioc)
HANDLE_IOCTL(SIOCSARP, dev_ifsioc) HANDLE_IOCTL(SIOCSARP, dev_ifsioc)
HANDLE_IOCTL(SIOCDARP, dev_ifsioc) HANDLE_IOCTL(SIOCDARP, dev_ifsioc)

View File

@ -1811,12 +1811,14 @@ static int atalk_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
static int atalk_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) static int atalk_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{ {
/* /*
* All Appletalk ioctls except SIOCATALKDIFADDR are standard. And * SIOCATALKDIFADDR is a SIOCPROTOPRIVATE ioctl number, so we
* SIOCATALKDIFADDR is handled by upper layer as well, so there is * cannot handle it in common code. The data we access if ifreq
* nothing to do. Eventually SIOCATALKDIFADDR should be moved * here is compatible, so we can simply call the native
* here so there is no generic SIOCPROTOPRIVATE translation in the * handler.
* system.
*/ */
if (cmd == SIOCATALKDIFADDR)
return atalk_ioctl(sock, cmd, (unsigned long)compat_ptr(arg));
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
} }
#endif #endif