]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
SCSI: enclosure: fix oops while iterating enclosure_status array
authorJames Bottomley <James.Bottomley@suse.de>
Thu, 26 Nov 2009 15:50:20 +0000 (09:50 -0600)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 1 Apr 2010 22:55:39 +0000 (15:55 -0700)
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
include/linux/enclosure.h

index 348443bdb23b9165ddc633efe3f7ab002a1e8882..8393376b108085bf98845c3fb13eda1d70982f79 100644 (file)
@@ -362,6 +362,7 @@ static const char *const enclosure_status [] = {
        [ENCLOSURE_STATUS_NOT_INSTALLED] = "not installed",
        [ENCLOSURE_STATUS_UNKNOWN] = "unknown",
        [ENCLOSURE_STATUS_UNAVAILABLE] = "unavailable",
+       [ENCLOSURE_STATUS_MAX] = NULL,
 };
 
 static const char *const enclosure_type [] = {
index 4332442b1b5719bd042f3c21c673979ea3b16bc3..cceb406d194c922d810b9d132a46c85c672416fe 100644 (file)
@@ -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 */