lkml.org 
[lkml]   [2010]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[36/89] SCSI: enclosure: fix oops while iterating enclosure_status array
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

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

    From: James Bottomley <James.Bottomley@suse.de>

    commit cc9b2e9f6603190c009e5d2629ce8e3f99571346 upstream.

    Based on patch originally by Jeff Mahoney <jeffm@suse.com>

    enclosure_status is expected to be a NULL terminated array of strings
    but isn't actually NULL terminated. When writing an invalid value to
    /sys/class/enclosure/.../.../status, it goes off the end of the array
    and Oopses.


    Fix by making the assumption true and adding NULL at the end.

    Reported-by: Artur Wojcik <artur.wojcik@intel.com>
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/misc/enclosure.c | 1 +
    include/linux/enclosure.h | 2 ++
    2 files changed, 3 insertions(+)

    --- a/drivers/misc/enclosure.c
    +++ b/drivers/misc/enclosure.c
    @@ -362,6 +362,7 @@ static const char *const enclosure_statu
    [ENCLOSURE_STATUS_NOT_INSTALLED] = "not installed",
    [ENCLOSURE_STATUS_UNKNOWN] = "unknown",
    [ENCLOSURE_STATUS_UNAVAILABLE] = "unavailable",
    + [ENCLOSURE_STATUS_MAX] = NULL,
    };

    static const char *const enclosure_type [] = {
    --- a/include/linux/enclosure.h
    +++ b/include/linux/enclosure.h
    @@ -42,6 +42,8 @@ enum enclosure_status {
    ENCLOSURE_STATUS_NOT_INSTALLED,
    ENCLOSURE_STATUS_UNKNOWN,
    ENCLOSURE_STATUS_UNAVAILABLE,
    + /* last element for counting purposes */
    + ENCLOSURE_STATUS_MAX
    };

    /* SFF-8485 activity light settings */



    \
     
     \ /
      Last update: 2010-03-31 02:29    [W:0.019 / U:122.996 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site