lkml.org 
[lkml]   [2014]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 120/121] EDAC: Poll timeout cannot be zero, p2
    Date
    3.11.10.5 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Borislav Petkov <bp@suse.de>

    commit 9da21b1509d8aa7ab4846722817d16c72d656c91 upstream.

    Sanitize code even more to accept unsigned longs only and to not allow
    polling intervals below 1 second as this is unnecessary and doesn't make
    much sense anyway for polling errors.

    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/1391457913-881-1-git-send-email-prarit@redhat.com
    Cc: Doug Thompson <dougthompson@xmission.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/edac/edac_mc.c | 4 ++--
    drivers/edac/edac_mc_sysfs.c | 10 ++++++----
    drivers/edac/edac_module.h | 2 +-
    3 files changed, 9 insertions(+), 7 deletions(-)

    diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
    index 89e1090..705f0a3 100644
    --- a/drivers/edac/edac_mc.c
    +++ b/drivers/edac/edac_mc.c
    @@ -601,7 +601,7 @@ static void edac_mc_workq_teardown(struct mem_ctl_info *mci)
    * user space has updated our poll period value, need to
    * reset our workq delays
    */
    -void edac_mc_reset_delay_period(int value)
    +void edac_mc_reset_delay_period(unsigned long value)
    {
    struct mem_ctl_info *mci;
    struct list_head *item;
    @@ -611,7 +611,7 @@ void edac_mc_reset_delay_period(int value)
    list_for_each(item, &mc_devices) {
    mci = list_entry(item, struct mem_ctl_info, link);

    - edac_mc_workq_setup(mci, (unsigned long) value);
    + edac_mc_workq_setup(mci, value);
    }

    mutex_unlock(&mem_ctls_mutex);
    diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
    index c855b71..e5bdf21 100644
    --- a/drivers/edac/edac_mc_sysfs.c
    +++ b/drivers/edac/edac_mc_sysfs.c
    @@ -52,18 +52,20 @@ int edac_mc_get_poll_msec(void)

    static int edac_set_poll_msec(const char *val, struct kernel_param *kp)
    {
    - long l;
    + unsigned long l;
    int ret;

    if (!val)
    return -EINVAL;

    - ret = kstrtol(val, 0, &l);
    + ret = kstrtoul(val, 0, &l);
    if (ret)
    return ret;
    - if (!l || ((int)l != l))
    +
    + if (l < 1000)
    return -EINVAL;
    - *((int *)kp->arg) = l;
    +
    + *((unsigned long *)kp->arg) = l;

    /* notify edac_mc engine to reset the poll period */
    edac_mc_reset_delay_period(l);
    diff --git a/drivers/edac/edac_module.h b/drivers/edac/edac_module.h
    index 3d139c6..f2118bf 100644
    --- a/drivers/edac/edac_module.h
    +++ b/drivers/edac/edac_module.h
    @@ -52,7 +52,7 @@ extern void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,
    extern void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev);
    extern void edac_device_reset_delay_period(struct edac_device_ctl_info
    *edac_dev, unsigned long value);
    -extern void edac_mc_reset_delay_period(int value);
    +extern void edac_mc_reset_delay_period(unsigned long value);

    extern void *edac_align_ptr(void **p, unsigned size, int n_elems);

    --
    1.9.0


    \
     
     \ /
      Last update: 2014-02-21 14:41    [W:3.498 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site