lkml.org 
[lkml]   [2011]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 3/6] mpcore_wdt: Fix WDIOC_SETOPTIONS handling
    Date
    According to the include/linux/watchdog.h WDIOC_SETOPTIONS is
    classified as 'read from device' ioctl call:
    #define WDIOC_SETOPTIONS _IOR(WATCHDOG_IOCTL_BASE, 4, int)

    However, the driver 'mpcore_wdt' performs 'copy_from_user' only if
    _IOC_WRITE is set, thus the local variable 'uarg' which is used in
    WDIOC_SETOPTIONS handling remains uninitialized.

    The proper way to fix this is to bind WDIOC_SETOPTIONS to _IOW,
    but this will break compatibility.
    So adding additional condition for performing 'copy_from_user'.

    Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
    ---
    drivers/watchdog/mpcore_wdt.c | 3 ++-
    1 files changed, 2 insertions(+), 1 deletions(-)

    diff --git a/drivers/watchdog/mpcore_wdt.c b/drivers/watchdog/mpcore_wdt.c
    index 7a3d6b2..b330a0a 100644
    --- a/drivers/watchdog/mpcore_wdt.c
    +++ b/drivers/watchdog/mpcore_wdt.c
    @@ -240,7 +240,8 @@ static long mpcore_wdt_ioctl(struct file *file, unsigned int cmd,
    if (_IOC_DIR(cmd) && _IOC_SIZE(cmd) > sizeof(uarg))
    return -ENOTTY;

    - if (_IOC_DIR(cmd) & _IOC_WRITE) {
    + if (_IOC_DIR(cmd) & _IOC_WRITE
    + || cmd == WDIOC_SETOPTIONS) {
    ret = copy_from_user(&uarg, (void __user *)arg, _IOC_SIZE(cmd));
    if (ret)
    return -EFAULT;
    --
    1.7.3.4


    \
     
     \ /
      Last update: 2011-07-05 21:07    [W:0.018 / U:1.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site