summaryrefslogtreecommitdiffstats
path: root/net/appletalk/ddp.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2009-11-06 09:09:06 +0100
committerDavid S. Miller <davem@davemloft.net>2009-11-07 08:01:14 +0100
commit206602217747382488fcae68351673cc9103debc (patch)
tree1cdf6ce1e7fe4f41e75997b88dedb8883563b8bc /net/appletalk/ddp.c
parentnet: copy socket ioctl code to net/socket.h (diff)
downloadlinux-206602217747382488fcae68351673cc9103debc.tar.xz
linux-206602217747382488fcae68351673cc9103debc.zip
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>
Diffstat (limited to 'net/appletalk/ddp.c')
-rw-r--r--net/appletalk/ddp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
index 4b0ce2e2b46e..7cd08b45c52b 100644
--- a/net/appletalk/ddp.c
+++ b/net/appletalk/ddp.c
@@ -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)
{
/*
- * All Appletalk ioctls except SIOCATALKDIFADDR are standard. And
- * SIOCATALKDIFADDR is handled by upper layer as well, so there is
- * nothing to do. Eventually SIOCATALKDIFADDR should be moved
- * here so there is no generic SIOCPROTOPRIVATE translation in the
- * system.
+ * SIOCATALKDIFADDR is a SIOCPROTOPRIVATE ioctl number, so we
+ * cannot handle it in common code. The data we access if ifreq
+ * here is compatible, so we can simply call the native
+ * handler.
*/
+ if (cmd == SIOCATALKDIFADDR)
+ return atalk_ioctl(sock, cmd, (unsigned long)compat_ptr(arg));
+
return -ENOIOCTLCMD;
}
#endif