From: Andreas Schwab Don't clobber error from sys_ioctl in HDIO_GETGEO compat wrapper. Signed-off-by: Andreas Schwab Signed-off-by: Andrew Morton --- fs/compat_ioctl.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN fs/compat_ioctl.c~fix-error-handling-in-hdio_getgeo-compat-wrapper fs/compat_ioctl.c --- a/fs/compat_ioctl.c~fix-error-handling-in-hdio_getgeo-compat-wrapper +++ a/fs/compat_ioctl.c @@ -684,8 +684,10 @@ static int hdio_getgeo(unsigned int fd, if (!err) { err = copy_to_user (ugeo, &geo, 4); err |= __put_user (geo.start, &ugeo->start); + if (err) + err = -EFAULT; } - return err ? -EFAULT : 0; + return err; } static int hdio_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg) _