From: Alessandro Zummo Appropriately use -ENOIOCTLCMD and -ENOTTY when the ioctl is not implemented by a driver. (akpm: we're not allowed to return -ENOIOCTLCMD to userspace. This patch does the right thing). Signed-off-by: Alessandro Zummo Signed-off-by: Andrew Morton --- drivers/rtc/rtc-dev.c | 6 +++--- drivers/rtc/rtc-sa1100.c | 2 +- drivers/rtc/rtc-test.c | 2 +- drivers/rtc/rtc-vr41xx.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff -puN drivers/rtc/rtc-dev.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate drivers/rtc/rtc-dev.c --- devel/drivers/rtc/rtc-dev.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate 2006-05-19 15:59:28.000000000 -0700 +++ devel-akpm/drivers/rtc/rtc-dev.c 2006-05-19 15:59:28.000000000 -0700 @@ -141,13 +141,13 @@ static int rtc_dev_ioctl(struct inode *i /* try the driver's ioctl interface */ if (ops->ioctl) { err = ops->ioctl(class_dev->dev, cmd, arg); - if (err != -EINVAL) + if (err != -ENOIOCTLCMD) return err; } /* if the driver does not provide the ioctl interface * or if that particular ioctl was not implemented - * (-EINVAL), we will try to emulate here. + * (-ENOIOCTLCMD), we will try to emulate here. */ switch (cmd) { @@ -233,7 +233,7 @@ static int rtc_dev_ioctl(struct inode *i break; default: - err = -EINVAL; + err = -ENOTTY; break; } diff -puN drivers/rtc/rtc-sa1100.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate drivers/rtc/rtc-sa1100.c --- devel/drivers/rtc/rtc-sa1100.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate 2006-05-19 15:59:28.000000000 -0700 +++ devel-akpm/drivers/rtc/rtc-sa1100.c 2006-05-19 15:59:28.000000000 -0700 @@ -247,7 +247,7 @@ static int sa1100_rtc_ioctl(struct devic rtc_freq = arg; return 0; } - return -EINVAL; + return -ENOIOCTLCMD; } static int sa1100_rtc_read_time(struct device *dev, struct rtc_time *tm) diff -puN drivers/rtc/rtc-test.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate drivers/rtc/rtc-test.c --- devel/drivers/rtc/rtc-test.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate 2006-05-19 15:59:28.000000000 -0700 +++ devel-akpm/drivers/rtc/rtc-test.c 2006-05-19 15:59:28.000000000 -0700 @@ -71,7 +71,7 @@ static int test_rtc_ioctl(struct device return 0; default: - return -EINVAL; + return -ENOIOCTLCMD; } } diff -puN drivers/rtc/rtc-vr41xx.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate drivers/rtc/rtc-vr41xx.c --- devel/drivers/rtc/rtc-vr41xx.c~rtc-subsystem-use-enoioctlcmd-and-enotty-where-appropriate 2006-05-19 15:59:28.000000000 -0700 +++ devel-akpm/drivers/rtc/rtc-vr41xx.c 2006-05-19 15:59:28.000000000 -0700 @@ -270,7 +270,7 @@ static int vr41xx_rtc_ioctl(struct devic epoch = arg; break; default: - return -EINVAL; + return -ENOIOCTLCMD; } return 0; _