lkml.org 
[lkml]   [2011]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/5] char driver: inappropriate ioctl operation should return ENOTTY
    Date
    ioctl() calls against a character special file with an inappropriate
    ioctl operation are incorrectly returning EINVAL rather than ENOTTY:

    [ENOTTY]
    Inappropriate I/O control operation.

    In dtlk I also fix the error code for failing to call copy_to_user.

    Signed-off-by: Lifeng Sun <lifongsun@gmail.com>
    ---
    drivers/char/dtlk.c | 4 ++--
    drivers/char/hpet.c | 2 +-
    drivers/char/i8k.c | 5 +----
    drivers/char/ipmi/ipmi_devintf.c | 3 +++
    drivers/char/random.c | 2 +-
    5 files changed, 8 insertions(+), 8 deletions(-)

    diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c
    index 85156dd..a293431 100644
    --- a/drivers/char/dtlk.c
    +++ b/drivers/char/dtlk.c
    @@ -281,7 +281,7 @@ static long dtlk_ioctl(struct file *file,
    sp = dtlk_interrogate();
    mutex_unlock(&dtlk_mutex);
    if (copy_to_user(argp, sp, sizeof(struct dtlk_settings)))
    - return -EINVAL;
    + return -EFAULT;
    return 0;

    case DTLK_STATUS:
    @@ -289,7 +289,7 @@ static long dtlk_ioctl(struct file *file,
    return put_user(portval, argp);

    default:
    - return -EINVAL;
    + return -ENOTTY;
    }
    }

    diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
    index 7066e80..720de66 100644
    --- a/drivers/char/hpet.c
    +++ b/drivers/char/hpet.c
    @@ -575,7 +575,7 @@ hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg,
    case HPET_IE_ON:
    return hpet_ioctl_ieon(devp);
    default:
    - return -EINVAL;
    + return -ENOTTY;
    }

    err = 0;
    diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
    index d72433f..baaa8cc 100644
    --- a/drivers/char/i8k.c
    +++ b/drivers/char/i8k.c
    @@ -317,9 +317,6 @@ i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg)
    unsigned char buff[16];
    int __user *argp = (int __user *)arg;

    - if (!argp)
    - return -EINVAL;
    -
    switch (cmd) {
    case I8K_BIOS_VERSION:
    val = i8k_get_bios_version();
    @@ -370,7 +367,7 @@ i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg)
    break;

    default:
    - return -EINVAL;
    + return -ENOTTY;
    }

    if (val < 0)
    diff --git a/drivers/char/ipmi/ipmi_devintf.c b/drivers/char/ipmi/ipmi_devintf.c
    index 2aa3977..e4272f2 100644
    --- a/drivers/char/ipmi/ipmi_devintf.c
    +++ b/drivers/char/ipmi/ipmi_devintf.c
    @@ -624,6 +624,9 @@ static int ipmi_ioctl(struct file *file,
    rv = ipmi_set_maintenance_mode(priv->user, mode);
    break;
    }
    + default:
    + rv = -ENOTTY;
    + break;
    }

    return rv;
    diff --git a/drivers/char/random.c b/drivers/char/random.c
    index d4ddeba..40aad1c 100644
    --- a/drivers/char/random.c
    +++ b/drivers/char/random.c
    @@ -1157,7 +1157,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
    rand_initialize();
    return 0;
    default:
    - return -EINVAL;
    + return -ENOTTY;
    }
    }

    --
    1.7.5.rc1


    \
     
     \ /
      Last update: 2011-04-28 10:33    [W:0.025 / U:60.828 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site