Patch "ses: fix additional element traversal bug" has been added to the 3.10-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ses: fix additional element traversal bug
to the 3.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ses-fix-additional-element-traversal-bug.patch
and it can be found in the queue-3.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5e1033561da1152c57b97ee84371dba2b3d64c25Mon Sep 17 00:00:00 2001
From: James Bottomley <[email protected]>
Date: Fri, 11 Dec 2015 09:16:38 -0800
Subject: ses: fix additional element traversal bug
From: James Bottomley <[email protected]>
commit 5e1033561da1152c57b97ee84371dba2b3d64c25 upstream.
KASAN found that our additional element processing scripts drop off the end of the VPD page into unallocated space. The reason is that not every element has additional information but our traversal routines think they do, leading to them expecting far more additional information than is present. Fix this by adding a gate to the traversal routine so that it only processes elements that are expected to have additional information (list is in SES-2 section 6.1.13.1:
Additional Element Status diagnostic page overview)
--- drivers/scsi/ses.c | 10 +++++++++- include/linux/enclosure.h | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-)
drivers/scsi/ses.c +9 -1
@@ -454,7 +454,15 @@ static void ses_enclosure_data_process(sif (desc_ptr) desc_ptr += len; -if (addl_desc_ptr) +if (addl_desc_ptr && +/* only find additional descriptions for specific devices */ + (type_ptr[0 ] ==ENCLOSURE_COMPONENT_DEVICE || + type_ptr[0 ] ==ENCLOSURE_COMPONENT_ARRAY_DEVICE || + type_ptr[0 ] ==ENCLOSURE_COMPONENT_SAS_EXPANDER || +/* these elements are optional */ + type_ptr[0 ] ==ENCLOSURE_COMPONENT_SCSI_TARGET_PORT || + type_ptr[0 ] ==ENCLOSURE_COMPONENT_SCSI_INITIATOR_PORT || + type_ptr[0 ] ==ENCLOSURE_COMPONENT_CONTROLLER_ELECTRONICS )) addl_desc_ptr += addl_desc_ptr[1 ] +2 ; }
include/linux/enclosure.h +4 -0
@@ -29,7 +29,11 @@/* A few generic types ... taken from ses-2 */ enum enclosure_component_type {ENCLOSURE_COMPONENT_DEVICE =0x01 , +ENCLOSURE_COMPONENT_CONTROLLER_ELECTRONICS =0x07 , +ENCLOSURE_COMPONENT_SCSI_TARGET_PORT =0x14 , +ENCLOSURE_COMPONENT_SCSI_INITIATOR_PORT =0x15 ,ENCLOSURE_COMPONENT_ARRAY_DEVICE =0x17 , +ENCLOSURE_COMPONENT_SAS_EXPANDER =0x18 , };/* ses-2 common element status */
Patches currently in stable-queue which might be from [email protected] are
queue-3.10/ses-fix-problems-with-simple-enclosures.patch queue-3.10/ses-fix-additional-element-traversal-bug.patch