From 2fb6802f2754f96a67d0310444e4d74caede0db0 Mon Sep 17 00:00:00 2001 From: David Bright Date: Mon, 11 Mar 2019 14:26:45 +0000 Subject: [PATCH] Fix a scribbler in the PMS driver. The ESGL bit was left uninitialized when executing the REPORT LUNS ioctl. This could allow a zeroed data buffer to be treated as a scatter/gather list. The firmware would eventually walk past the end of the data buffer, potentially find what looked like a valid address/length pair, and write the result to semi-random memory. Obtained from: Dell EMC Isilon MFC after: 1 week Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D19398 --- sys/dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c b/sys/dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c index c7d0ca08564..15b83e9e221 100644 --- a/sys/dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c +++ b/sys/dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c @@ -1874,7 +1874,9 @@ tiNumOfLunIOCTLreq( agSSPFrame->dataLength = REPORT_LUN_LEN; agSSPFrame->agSgl.len = sizeof(agsaSSPCmdInfoUnit_t); - + agSSPFrame->agSgl.extReserved = 0; + CLEAR_ESGL_EXTEND(agSSPFrame->agSgl.extReserved); + status = saSSPStart(agRoot, agIORequest, 0, agDevHandle, agRequestType,agSASRequestBody,agNULL, &ossaSSPIoctlCompleted); if(status != AGSA_RC_SUCCESS)