From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Hans Verkuil <hverkuil@xs4all.nl>,
Sakari Ailus <sakari.ailus@iki.fi>, Arnd Bergmann <arnd@arndb.de>,
Linux Media Mailing List <linux-media@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] [media] v4l2 core: return -ENOIOCTLCMD if an ioctl doesn't exist
Date: Wed, 29 Jun 2011 09:34:48 -0300 [thread overview]
Message-ID: <4E0B1BE8.3020500@redhat.com> (raw)
In-Reply-To: <BANLkTi=6W0quy1M71UapwKDe97E67b4EiA@mail.gmail.com>
Em 28-06-2011 13:05, Linus Torvalds escreveu:
> On Mon, Jun 27, 2011 at 11:04 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> It was my understanding that we shouldn't break the userspace API. This breaks
>> the userspace API. If everyone else says it's fine to break the userspace API
>> this time, then who am I to object?
>
> We are indeed never supposed to break userspace.
>
> But that does not mean that we cannot fix bugs. It only means exactly
> what it says: we cannot break user space.
>
> If we fix a bug, and it turns out that user space actually depends on
> that bug, then we need to revert the fix. But it never means "you can
> never make any changes at all to interfaces". It only means "you
> cannot make any changes that break applications".
>
> There may be applications out there that really break when they get
> ENOTTY instead of EINVAL. But most cases that check for errors from
> ioctl's tend to just say "did this succeed or not" rather than "did
> this return EINVAL". That's *doubly* true since the error code has
> been ambiguous, so checking for the exact error code has always been
> pretty pointless.
>
> So the common use of the error code tends to be for things like
> strerror(), and then it would be a real improvement to show
> "Inappropriate ioctl for device" when the device doesn't support that
> ioctl, wouldn't it?
>
> But yes, let's try to fix it, and if it turns out that that breaks
> something, we must simply revert and probably add a comment to the
> source code ("EINVAL is wrong, it should be ENOTTY, but xyzzy only
> works with EINVAL").
I've applied the fix locally, using ENOTTY, and tested with 3 drivers that
have several non-implemented ioctl's: vivi, uvcvideo and gspca (they basically
don't implement tuner ioctl's. The uvcvideo doesn't implement the *STD ioctls,
and the gspca driver doesn't implement the ENUM_FRAME* ioctl's).
I tested with camorama (using libv4l1 conversion code), vlc, qv4l2, xawtv3 and
mplayer. I also tested two closed source applications (Skype and flash - at twitcam).
With all drivers, the applications worked as expected.
There is just a minor glitch with xawtv3, as it currently doesn't print an
error log if VIDIOC_G_STD returns -EINVAL when debug is disabled.
Yet, the error is not fatal and happens only once, during device probing.
Xawtv works fine, and suppressing the noise is an easy fix. As we're releasing
version 1.101 of it with alsa streaming support, I'll latter add a code there
fixing it.
Complex TV applications like mythtv won't work if the devices don't implement
tuner and control ioctl's. I don't believe that it would fail if we change the
return code for unimplemented ioctls, because if an ioctl that mythtv
needs is not implemented, it will fail anyway. Unfortunately, installing
mythtv is a very complex task, and requires hours/days of work. I can't
affort to install it for testing ATM, but I'm sure others have it installed,
and can provide us some feedback.
So, I'll prepare the patches for replacing EINVAL to ENOTTY and add it at
next. This'll give us some time to get feedback about eventual breakages
on other tools that I didn't test.
Thanks,
Mauro
next prev parent reply other threads:[~2011-06-29 12:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-24 23:11 [PATCH] [media] v4l2 core: return -ENOIOCTLCMD if an ioctl doesn't exist Mauro Carvalho Chehab
2011-06-26 15:40 ` Sakari Ailus
2011-06-26 16:20 ` Mauro Carvalho Chehab
2011-06-26 17:13 ` Arnd Bergmann
2011-06-26 17:30 ` Mauro Carvalho Chehab
2011-06-26 18:20 ` Arnd Bergmann
2011-06-26 18:51 ` Mauro Carvalho Chehab
2011-06-26 19:52 ` Arnd Bergmann
2011-06-27 5:38 ` Hans Verkuil
2011-06-27 12:02 ` Sakari Ailus
2011-06-27 12:17 ` Hans Verkuil
2011-06-27 13:54 ` Mauro Carvalho Chehab
2011-06-27 14:56 ` Hans Verkuil
2011-06-27 15:33 ` Mauro Carvalho Chehab
2011-06-27 16:14 ` Arnd Bergmann
2011-06-27 16:42 ` Mauro Carvalho Chehab
2011-06-27 17:07 ` Hans Verkuil
2011-06-27 20:37 ` Mauro Carvalho Chehab
2011-06-27 20:48 ` Linus Torvalds
2011-06-28 6:04 ` Hans Verkuil
2011-06-28 16:05 ` Linus Torvalds
2011-06-28 16:42 ` Alan Cox
2011-06-28 16:50 ` Arnd Bergmann
2011-06-29 12:34 ` Mauro Carvalho Chehab [this message]
2011-06-27 15:12 ` Andy Walls
2011-06-27 15:24 ` Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E0B1BE8.3020500@redhat.com \
--to=mchehab@redhat.com \
--cc=arnd@arndb.de \
--cc=hverkuil@xs4all.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=sakari.ailus@iki.fi \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox