From: Jan Stancek <jstancek@redhat.com>
To: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Cc: shyju pv <shyju.pv@huawei.com>,
sanil kumar <sanil.kumar@huawei.com>,
max maxiansheng <max.maxiansheng@huawei.com>,
Mike Frysinger <vapier@gentoo.org>,
LTP <ltp-list@lists.sourceforge.net>
Subject: Re: [LTP] [PATCH] ioctl01: change the errno to ENOTTY when passed an invalid command
Date: Thu, 1 Nov 2012 04:05:17 -0400 (EDT) [thread overview]
Message-ID: <787397777.3211869.1351757117123.JavaMail.root@redhat.com> (raw)
In-Reply-To: <1351742419-30299-1-git-send-email-gaowanlong@cn.fujitsu.com>
----- Original Message -----
> From: "Wanlong Gao" <gaowanlong@cn.fujitsu.com>
> To: "LTP" <ltp-list@lists.sourceforge.net>
> Cc: "sanil kumar" <sanil.kumar@huawei.com>, "Mike Frysinger" <vapier@gentoo.org>, "shyju pv" <shyju.pv@huawei.com>,
> "max maxiansheng" <max.maxiansheng@huawei.com>
> Sent: Thursday, 1 November, 2012 5:00:19 AM
> Subject: [LTP] [PATCH] ioctl01: change the errno to ENOTTY when passed an invalid command
>
> As linus said at the below commit,
> commit 07d106d0a33d6063d2061305903deb02489eba20
> Author: Linus Torvalds <torvalds@linux-foundation.org>
> Date: Thu Jan 5 15:40:12 2012 -0800
>
> vfs: fix up ENOIOCTLCMD error handling
>
> We're doing some odd things there, which already messes up
> various users
> (see the net/socket.c code that this removes), and it was going
> to add
> yet more crud to the block layer because of the incorrect error
> code
> translation.
>
> ENOIOCTLCMD is not an error return that should be returned to
> user mode
> from the "ioctl()" system call, but it should *not* be translated
> as
> EINVAL ("Invalid argument"). It should be translated as ENOTTY
> ("Inappropriate ioctl for device").
>
> That EINVAL confusion has apparently so permeated some code that
> the
> block layer actually checks for it, which is sad. We continue to
> do so
> for now, but add a big comment about how wrong that is, and we
> should
> remove it entirely eventually. In the meantime, this tries to
> keep the
> changes localized to just the EINVAL -> ENOTTY fix, and removing
> code
> that makes it harder to do the right thing.
>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
>
> Return ENOTTY is right. And with the tty driver change with below
> commit,
> commit bbb63c514a3464342967237a51a21ea8f61ab951
> Author: Wanlong Gao <gaowanlong@cn.fujitsu.com>
> Date: Mon Aug 27 15:23:12 2012 +0800
>
> drivers:tty:fix up ENOIOCTLCMD error handling
>
> At commit 07d106d0, Linus pointed out that ENOIOCTLCMD should be
> translated as ENOTTY to user mode.
> For example:
> fd = open("/dev/tty", O_RDWR);
> ioctl(fd, -1, &argp);
>
> then the errno should be ENOTTY but not EINVAL.
>
> Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
> Acked-by: Alan Cox <alan@linux.intel.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> The tty driver will return the right ENOTTY in upstream kernel when
> passed a invalid ioctl command, so we fixed the LTP test case to
> suit this return value change.
> ---
> testcases/kernel/syscalls/ioctl/ioctl01.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/syscalls/ioctl/ioctl01.c
> b/testcases/kernel/syscalls/ioctl/ioctl01.c
> index 8b044e7..ef64896 100644
> --- a/testcases/kernel/syscalls/ioctl/ioctl01.c
> +++ b/testcases/kernel/syscalls/ioctl/ioctl01.c
> @@ -87,7 +87,7 @@ struct test_case_t {
> &fd, TCGETA, (struct termio *)-1, EFAULT},
> /* command is invalid */
> {
> - &fd, INVAL_IOCTL, &termio, EINVAL},
> + &fd, INVAL_IOCTL, &termio, ENOTTY},
Won't this break on older kernels? Can we test for kernel version with tst_kvercmp()?
Regards,
Jan
> /* file descriptor is for a regular file */
> {
> &fd1, TCGETA, &termio, ENOTTY},
> --
> 1.8.0
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next parent reply other threads:[~2012-11-01 8:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1351742419-30299-1-git-send-email-gaowanlong@cn.fujitsu.com>
2012-11-01 8:05 ` Jan Stancek [this message]
2012-11-01 8:15 ` [LTP] [PATCH] ioctl01: change the errno to ENOTTY when passed an invalid command Wanlong Gao
2012-11-01 9:55 ` Jan Stancek
2012-11-01 10:05 ` Wanlong Gao
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=787397777.3211869.1351757117123.JavaMail.root@redhat.com \
--to=jstancek@redhat.com \
--cc=gaowanlong@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=max.maxiansheng@huawei.com \
--cc=sanil.kumar@huawei.com \
--cc=shyju.pv@huawei.com \
--cc=vapier@gentoo.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