linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h
       [not found] <20030912112557.C10099@raphnet.net>
@ 2003-09-12 18:41 ` Pavel Machek
  2003-09-12 20:01   ` Vojtech Pavlik
  0 siblings, 1 reply; 5+ messages in thread
From: Pavel Machek @ 2003-09-12 18:41 UTC (permalink / raw)
  To: Raphael Assenat; +Cc: vojtech, kernel list

Hi!

> I wanted to use a joystick on my sparc64 workstation, and discovered that the
> joystick driver uses simple ioclt that are safe to pass from 32bit user space
> to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h.
> 
> There is only one missing ioctl in the patch. The ioctl is defined like this:
> #define JSIOCGNAME(len)         _IOC(_IOC_READ, 'j', 0x13, len)
> so the command does not have a fixed value. I dont know how to handle this one,
> but it is only used to get the joystick name, all the applications I tried work
> well even if this ioctl fails.

Well, whoever invented that JSIOCGNAME should be shot. That is not
single ioctl, its 2^14 of them!

Testing for CONFIG_INPUT_JOYDEV_MODULE looks like bad idea. AFAIR
CONFIG_INPUT_JOYDEV_MODULE implies CONFIG_INPUT_JOYDEV. But this would
mean that you can not insert joydev module into kernel compiled with
JOYDEV=n. Perhaps it better to just simply kill the ifdef?

Vojtech, this fill be needed on x86-64, too. Can you take care of it?

									Pavel

> I have tested this patch with snes9x and jstest.c without any problems.
> 
> Regards,
> Raphael Assenat
> 
> --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003
> +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c    Sun Sep  7 19:03:52 2003
> @@ -65,6 +65,7 @@
>  #include <linux/ctype.h>
>  #include <linux/ioctl32.h>
>  #include <linux/ncp_fs.h>
> +#include <linux/joystick.h>
> 
>  #include <net/sock.h>          /* siocdevprivate_ioctl */
>  #include <net/bluetooth/bluetooth.h>
> --- linux-2.6.0-test4/include/linux/compat_ioctl.h      Fri Aug 22 20:01:27
> 2003
> +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep  7 20:07:57
> 2003
> @@ -680,3 +680,16 @@
>  COMPATIBLE_IOCTL(NBD_PRINT_DEBUG)
>  COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS)
>  COMPATIBLE_IOCTL(NBD_DISCONNECT)
> +
> +/* little j */
> +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE)
> +COMPATIBLE_IOCTL(JSIOCGVERSION)
> +COMPATIBLE_IOCTL(JSIOCGAXES)
> +COMPATIBLE_IOCTL(JSIOCGBUTTONS)
> +COMPATIBLE_IOCTL(JSIOCSCORR)
> +COMPATIBLE_IOCTL(JSIOCGCORR)
> +COMPATIBLE_IOCTL(JSIOCSAXMAP)
> +COMPATIBLE_IOCTL(JSIOCGAXMAP)
> +COMPATIBLE_IOCTL(JSIOCSBTNMAP)
> +COMPATIBLE_IOCTL(JSIOCGBTNMAP)
> +#endif

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h
  2003-09-12 18:41 ` [PATCH] ioctl entries for joystick in compat_ioctl.h Pavel Machek
@ 2003-09-12 20:01   ` Vojtech Pavlik
  2003-09-12 21:13     ` Pavel Machek
  2004-12-08 19:25     ` Jeremy Fitzhardinge
  0 siblings, 2 replies; 5+ messages in thread
From: Vojtech Pavlik @ 2003-09-12 20:01 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Raphael Assenat, kernel list

On Fri, Sep 12, 2003 at 08:41:45PM +0200, Pavel Machek wrote:
> Hi!
> 
> > I wanted to use a joystick on my sparc64 workstation, and discovered that the
> > joystick driver uses simple ioclt that are safe to pass from 32bit user space
> > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h.
> > 
> > There is only one missing ioctl in the patch. The ioctl is defined like this:
> > #define JSIOCGNAME(len)         _IOC(_IOC_READ, 'j', 0x13, len)
> > so the command does not have a fixed value. I dont know how to handle this one,
> > but it is only used to get the joystick name, all the applications I tried work
> > well even if this ioctl fails.
> 
> Well, whoever invented that JSIOCGNAME should be shot. That is not
> single ioctl, its 2^14 of them!

Well, who could ever have known that this will be a problem in 1998?
It's not the only ioctl done this way.

> Testing for CONFIG_INPUT_JOYDEV_MODULE looks like bad idea. AFAIR
> CONFIG_INPUT_JOYDEV_MODULE implies CONFIG_INPUT_JOYDEV. But this would
> mean that you can not insert joydev module into kernel compiled with
> JOYDEV=n. Perhaps it better to just simply kill the ifdef?
> 
> Vojtech, this fill be needed on x86-64, too. Can you take care of it?

Yes, I will.

> > I have tested this patch with snes9x and jstest.c without any problems.
> > 
> > Regards,
> > Raphael Assenat
> > 
> > --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003
> > +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c    Sun Sep  7 19:03:52 2003
> > @@ -65,6 +65,7 @@
> >  #include <linux/ctype.h>
> >  #include <linux/ioctl32.h>
> >  #include <linux/ncp_fs.h>
> > +#include <linux/joystick.h>
> > 
> >  #include <net/sock.h>          /* siocdevprivate_ioctl */
> >  #include <net/bluetooth/bluetooth.h>
> > --- linux-2.6.0-test4/include/linux/compat_ioctl.h      Fri Aug 22 20:01:27
> > 2003
> > +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep  7 20:07:57
> > 2003
> > @@ -680,3 +680,16 @@
> >  COMPATIBLE_IOCTL(NBD_PRINT_DEBUG)
> >  COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS)
> >  COMPATIBLE_IOCTL(NBD_DISCONNECT)
> > +
> > +/* little j */
> > +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE)
> > +COMPATIBLE_IOCTL(JSIOCGVERSION)
> > +COMPATIBLE_IOCTL(JSIOCGAXES)
> > +COMPATIBLE_IOCTL(JSIOCGBUTTONS)
> > +COMPATIBLE_IOCTL(JSIOCSCORR)
> > +COMPATIBLE_IOCTL(JSIOCGCORR)
> > +COMPATIBLE_IOCTL(JSIOCSAXMAP)
> > +COMPATIBLE_IOCTL(JSIOCGAXMAP)
> > +COMPATIBLE_IOCTL(JSIOCSBTNMAP)
> > +COMPATIBLE_IOCTL(JSIOCGBTNMAP)
> > +#endif
> 
> -- 
> When do you have a heart between your knees?
> [Johanka's followup: and *two* hearts?]

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h
  2003-09-12 20:01   ` Vojtech Pavlik
@ 2003-09-12 21:13     ` Pavel Machek
  2003-09-13  7:13       ` Vojtech Pavlik
  2004-12-08 19:25     ` Jeremy Fitzhardinge
  1 sibling, 1 reply; 5+ messages in thread
From: Pavel Machek @ 2003-09-12 21:13 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: Raphael Assenat, kernel list

Hi!

> > > I wanted to use a joystick on my sparc64 workstation, and discovered that the
> > > joystick driver uses simple ioclt that are safe to pass from 32bit user space
> > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h.
> > > 
> > > There is only one missing ioctl in the patch. The ioctl is defined like this:
> > > #define JSIOCGNAME(len)         _IOC(_IOC_READ, 'j', 0x13, len)
> > > so the command does not have a fixed value. I dont know how to handle this one,
> > > but it is only used to get the joystick name, all the applications I tried work
> > > well even if this ioctl fails.
> > 
> > Well, whoever invented that JSIOCGNAME should be shot. That is not
> > single ioctl, its 2^14 of them!
> 
> Well, who could ever have known that this will be a problem in 1998?
> It's not the only ioctl done this way.

So it was you? :-)

I believe ultrasparcs were around in '98. Anyway, what are other
ioctls doing this? They look pretty problematic from compat_ioctl
perspective.

We could do better by pushing compat handler down to the drivers for
ugly cases like this...
									Pavel
-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h
  2003-09-12 21:13     ` Pavel Machek
@ 2003-09-13  7:13       ` Vojtech Pavlik
  0 siblings, 0 replies; 5+ messages in thread
From: Vojtech Pavlik @ 2003-09-13  7:13 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Vojtech Pavlik, Raphael Assenat, kernel list

On Fri, Sep 12, 2003 at 11:13:06PM +0200, Pavel Machek wrote:

> > > > I wanted to use a joystick on my sparc64 workstation, and discovered that the
> > > > joystick driver uses simple ioclt that are safe to pass from 32bit user space
> > > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h.
> > > > 
> > > > There is only one missing ioctl in the patch. The ioctl is defined like this:
> > > > #define JSIOCGNAME(len)         _IOC(_IOC_READ, 'j', 0x13, len)
> > > > so the command does not have a fixed value. I dont know how to handle this one,
> > > > but it is only used to get the joystick name, all the applications I tried work
> > > > well even if this ioctl fails.
> > > 
> > > Well, whoever invented that JSIOCGNAME should be shot. That is not
> > > single ioctl, its 2^14 of them!
> > 
> > Well, who could ever have known that this will be a problem in 1998?
> > It's not the only ioctl done this way.
> 
> So it was you? :-)

Yes. :)

> I believe ultrasparcs were around in '98. Anyway, what are other
> ioctls doing this? They look pretty problematic from compat_ioctl
> perspective.

I don't remember - I know I just copied the concept from elsewhere.
I'm sure you'll be able to grep for it.

> We could do better by pushing compat handler down to the drivers for
> ugly cases like this...

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h
  2003-09-12 20:01   ` Vojtech Pavlik
  2003-09-12 21:13     ` Pavel Machek
@ 2004-12-08 19:25     ` Jeremy Fitzhardinge
  1 sibling, 0 replies; 5+ messages in thread
From: Jeremy Fitzhardinge @ 2004-12-08 19:25 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: Pavel Machek, Raphael Assenat, linux-kernel

On Fri, 2003-09-12 at 22:01 +0200, Vojtech Pavlik wrote:
> On Fri, Sep 12, 2003 at 08:41:45PM +0200, Pavel Machek wrote:
> > Hi!
> > Raphael Assenat <raph@raphnet.net> wrote:
> > > I wanted to use a joystick on my sparc64 workstation, and discovered that the
> > > joystick driver uses simple ioclt that are safe to pass from 32bit user space
> > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h.
> > > 
> > > There is only one missing ioctl in the patch. The ioctl is defined like this:
> > > #define JSIOCGNAME(len)         _IOC(_IOC_READ, 'j', 0x13, len)
> > > so the command does not have a fixed value. I dont know how to handle this one,
> > > but it is only used to get the joystick name, all the applications I tried work
> > > well even if this ioctl fails.

[...]

> > Vojtech, this fill be needed on x86-64, too. Can you take care of it?


> > I have tested this patch with snes9x and jstest.c without any problems.
> > 
> > Regards,
> > Raphael Assenat
> > 
> > --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003
> > +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c    Sun Sep  7 19:03:52 2003
> > @@ -65,6 +65,7 @@
> >  #include <linux/ctype.h>
> >  #include <linux/ioctl32.h>
> >  #include <linux/ncp_fs.h>
> > +#include <linux/joystick.h>
> > 
> >  #include <net/sock.h>          /* siocdevprivate_ioctl */
> >  #include <net/bluetooth/bluetooth.h>
> > --- linux-2.6.0-test4/include/linux/compat_ioctl.h      Fri Aug 22 20:01:27
> > 2003
> > +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep  7 20:07:57
> > 2003
> > @@ -680,3 +680,16 @@
> >  COMPATIBLE_IOCTL(NBD_PRINT_DEBUG)
> >  COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS)
> >  COMPATIBLE_IOCTL(NBD_DISCONNECT)
> > +
> > +/* little j */
> > +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE)
> > +COMPATIBLE_IOCTL(JSIOCGVERSION)
> > +COMPATIBLE_IOCTL(JSIOCGAXES)
> > +COMPATIBLE_IOCTL(JSIOCGBUTTONS)
> > +COMPATIBLE_IOCTL(JSIOCSCORR)
> > +COMPATIBLE_IOCTL(JSIOCGCORR)
> > +COMPATIBLE_IOCTL(JSIOCSAXMAP)
> > +COMPATIBLE_IOCTL(JSIOCGAXMAP)
> > +COMPATIBLE_IOCTL(JSIOCSBTNMAP)
> > +COMPATIBLE_IOCTL(JSIOCGBTNMAP)
> > +#endif

I notice that this patch does not appear in current kernels, and the
joystick doesn't work for 32-bit apps on x86-64.  Did this patch ever
make it into the kernel?  Or some replacement?  If not, what's the
problem?

Thanks,
	J


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-12-08 19:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20030912112557.C10099@raphnet.net>
2003-09-12 18:41 ` [PATCH] ioctl entries for joystick in compat_ioctl.h Pavel Machek
2003-09-12 20:01   ` Vojtech Pavlik
2003-09-12 21:13     ` Pavel Machek
2003-09-13  7:13       ` Vojtech Pavlik
2004-12-08 19:25     ` Jeremy Fitzhardinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).