Thread (5 messages) flat view 5 messages, 3 authors, 2006-01-11

Re: [PATCH] net: 32 bit (socket layer) ioctl emulation for 64 bit kernels

From: Arnd Bergmann <arnd@arndb.de>
Date: 2006-01-11 12:53:08
Also in: lkml

On Wednesday 11 January 2006 06:28, Shaun Pereira wrote:
And the correct x.25 patch, (will build a [PATCH] if this is ok).
Tested with with xot to a Cisco box. 
Much better now, but
+       switch(cmd) {
+               case TIOCOUTQ:
+               case TIOCINQ:
Looking at how these are handled in x25_ioctl(),
these should be forwarded to x25_ioctl(), because they are
compatible. With your current code you incorrectly return -EINVAL.
+               case SIOCGSTAMP:
This one actually needs a conversion handler. You could
add a generic compat_sock_get_timestamp() function to net/compat.c
for this.
+               case SIOCGIFADDR:
+               case SIOCSIFADDR:
+               case SIOCGIFDSTADDR:
+               case SIOCSIFDSTADDR:
+               case SIOCGIFBRDADDR:
+               case SIOCSIFBRDADDR:
+               case SIOCGIFNETMASK:
+               case SIOCSIFNETMASK:
+               case SIOCGIFMETRIC:
+               case SIOCSIFMETRIC:
These all return -EINVAL in x25_ioctl, just do the same here.

For any the cases above, you can also choose not to handle them
in compat_x25_ioctl at all and just return -ENOIOCTLCMD, so they
get forwarded to the conversion code in fs/compat_ioctl.c. 
+               case SIOCADDRT:
+               case SIOCDELRT:
These should call x25_route_ioctl() instead of falling through to
to compat_x25_subscr_ioctl(), right?
+               case SIOCX25GFACILITIES:
+               case SIOCX25SFACILITIES:
+               case SIOCX25GCALLUSERDATA:
+               case SIOCX25SCALLUSERDATA:
+               case SIOCX25GCAUSEDIAG:
+               case SIOCX25SCUDMATCHLEN:
+               case SIOCX25CALLACCPTAPPRV:
+                       rc = x25_ioctl(sock, cmd, (unsigned long)argp);
+                       break;
+               case SIOCX25SENDCALLACCPT:
+                       rc = x25_ioctl(sock, cmd, (unsigned long)argp);
+                       break;
I guess these can be combined to a single case list.

        Arnd <><
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help