|
@@ -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 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;
|
|
return -ENOIOCTLCMD;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|