All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>,
	linux-scsi@vger.kernel.org, martin.petersen@oracle.com
Cc: oe-kbuild-all@lists.linux.dev, sathya.prakash@broadcom.com,
	ranjan.kumar@broadcom.com, chandrakanth.patil@broadcom.com,
	sweeti.vandure@broadcom.com,
	Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Subject: Re: [PATCH 14/37] scsi: mpt3sas: Fix buffer overflow in _scsih_scsi_ioc_info
Date: Fri, 6 Nov 2026 19:16:17 +0800	[thread overview]
Message-ID: <202611061833.3AceeVtV-lkp@intel.com> (raw)
In-Reply-To: <1793925772-1303-15-git-send-email-shivasharan.srikanteshwara@broadcom.com>

Hi Shivasharan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next linus/master v7.4-rc1 next-20261105]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Shivasharan-S/scsi-mpt3sas-Validate-firmware-reported-IOCRequestFrameSize/20261105-164216
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link:    https://lore.kernel.org/r/1793925772-1303-15-git-send-email-shivasharan.srikanteshwara%40broadcom.com
patch subject: [PATCH 14/37] scsi: mpt3sas: Fix buffer overflow in _scsih_scsi_ioc_info
config: arm-randconfig-1000-20261106 (https://download.01.org/0day-ci/archive/20261106/202611061833.3AceeVtV-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 10.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261106/202611061833.3AceeVtV-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202611061833.3AceeVtV-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/scsi/mpt3sas/mpt3sas_scsih.c: In function '_scsih_scsi_ioc_info.constprop':
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:5783:57: warning: '%s' directive output may be truncated writing 16 bytes into a region of size between 6 and 64 [-Wformat-truncation=]
    5783 |   snprintf(desc_scsi_state, MPT_STRING_LENGTH, "%s%s%s%s%s",
         |                                                         ^~
   ......
    5793 |     "autosense valid " : "");
         |     ~~~~~~~~~~~~~~~~~~                                   
   drivers/scsi/mpt3sas/mpt3sas_scsih.c:5783:3: note: 'snprintf' output between 17 and 75 bytes into a destination of size 64
    5783 |   snprintf(desc_scsi_state, MPT_STRING_LENGTH, "%s%s%s%s%s",
         |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5784 |     (scsi_state & MPI2_SCSI_STATE_RESPONSE_INFO_VALID) ?
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5785 |     "response info " : "",
         |     ~~~~~~~~~~~~~~~~~~~~~~
    5786 |     (scsi_state & MPI2_SCSI_STATE_TERMINATED) ?
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5787 |     "state terminated " : "",
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~
    5788 |     (scsi_state & MPI2_SCSI_STATE_NO_SCSI_STATUS) ?
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5789 |     "no status " : "",
         |     ~~~~~~~~~~~~~~~~~~
    5790 |     (scsi_state & MPI2_SCSI_STATE_AUTOSENSE_FAILED) ?
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5791 |     "autosense failed " : "",
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~
    5792 |     (scsi_state & MPI2_SCSI_STATE_AUTOSENSE_VALID) ?
         |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5793 |     "autosense valid " : "");
         |     ~~~~~~~~~~~~~~~~~~~~~~~~


vim +5783 drivers/scsi/mpt3sas/mpt3sas_scsih.c

  5639	
  5640	/**
  5641	 * _scsih_scsi_ioc_info - translated non-successful SCSI_IO request
  5642	 * @ioc: per adapter object
  5643	 * @scmd: pointer to scsi command object
  5644	 * @mpi_reply: reply mf payload returned from firmware
  5645	 * @smid: ?
  5646	 *
  5647	 * scsi_status - SCSI Status code returned from target device
  5648	 * scsi_state - state info associated with SCSI_IO determined by ioc
  5649	 * ioc_status - ioc supplied status info
  5650	 */
  5651	static void
  5652	_scsih_scsi_ioc_info(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
  5653		Mpi2SCSIIOReply_t *mpi_reply, u16 smid)
  5654	{
  5655		u32 response_info;
  5656		u8 *response_bytes;
  5657		u16 ioc_status = le16_to_cpu(mpi_reply->IOCStatus) &
  5658		    MPI2_IOCSTATUS_MASK;
  5659		u8 scsi_state = mpi_reply->SCSIState;
  5660		u8 scsi_status = mpi_reply->SCSIStatus;
  5661		char *desc_ioc_state = NULL;
  5662		char *desc_scsi_status = NULL;
  5663		char *desc_scsi_state = ioc->tmp_string;
  5664		u32 log_info = le32_to_cpu(mpi_reply->IOCLogInfo);
  5665		struct _sas_device *sas_device = NULL;
  5666		struct _pcie_device *pcie_device = NULL;
  5667		struct scsi_target *starget = scmd->device->sdev_target;
  5668		struct MPT3SAS_TARGET *priv_target = starget->hostdata;
  5669		char *device_str = NULL;
  5670	
  5671		if (!priv_target)
  5672			return;
  5673		if (ioc->hide_ir_msg)
  5674			device_str = "WarpDrive";
  5675		else
  5676			device_str = "volume";
  5677	
  5678		if (log_info == 0x31170000)
  5679			return;
  5680	
  5681		switch (ioc_status) {
  5682		case MPI2_IOCSTATUS_SUCCESS:
  5683			desc_ioc_state = "success";
  5684			break;
  5685		case MPI2_IOCSTATUS_INVALID_FUNCTION:
  5686			desc_ioc_state = "invalid function";
  5687			break;
  5688		case MPI2_IOCSTATUS_SCSI_RECOVERED_ERROR:
  5689			desc_ioc_state = "scsi recovered error";
  5690			break;
  5691		case MPI2_IOCSTATUS_SCSI_INVALID_DEVHANDLE:
  5692			desc_ioc_state = "scsi invalid dev handle";
  5693			break;
  5694		case MPI2_IOCSTATUS_SCSI_DEVICE_NOT_THERE:
  5695			desc_ioc_state = "scsi device not there";
  5696			break;
  5697		case MPI2_IOCSTATUS_SCSI_DATA_OVERRUN:
  5698			desc_ioc_state = "scsi data overrun";
  5699			break;
  5700		case MPI2_IOCSTATUS_SCSI_DATA_UNDERRUN:
  5701			desc_ioc_state = "scsi data underrun";
  5702			break;
  5703		case MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR:
  5704			desc_ioc_state = "scsi io data error";
  5705			break;
  5706		case MPI2_IOCSTATUS_SCSI_PROTOCOL_ERROR:
  5707			desc_ioc_state = "scsi protocol error";
  5708			break;
  5709		case MPI2_IOCSTATUS_SCSI_TASK_TERMINATED:
  5710			desc_ioc_state = "scsi task terminated";
  5711			break;
  5712		case MPI2_IOCSTATUS_SCSI_RESIDUAL_MISMATCH:
  5713			desc_ioc_state = "scsi residual mismatch";
  5714			break;
  5715		case MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED:
  5716			desc_ioc_state = "scsi task mgmt failed";
  5717			break;
  5718		case MPI2_IOCSTATUS_SCSI_IOC_TERMINATED:
  5719			desc_ioc_state = "scsi ioc terminated";
  5720			break;
  5721		case MPI2_IOCSTATUS_SCSI_EXT_TERMINATED:
  5722			desc_ioc_state = "scsi ext terminated";
  5723			break;
  5724		case MPI2_IOCSTATUS_EEDP_GUARD_ERROR:
  5725			desc_ioc_state = "eedp guard error";
  5726			break;
  5727		case MPI2_IOCSTATUS_EEDP_REF_TAG_ERROR:
  5728			desc_ioc_state = "eedp ref tag error";
  5729			break;
  5730		case MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR:
  5731			desc_ioc_state = "eedp app tag error";
  5732			break;
  5733		case MPI2_IOCSTATUS_INSUFFICIENT_POWER:
  5734			desc_ioc_state = "insufficient power";
  5735			break;
  5736		default:
  5737			desc_ioc_state = "unknown";
  5738			break;
  5739		}
  5740	
  5741		switch (scsi_status) {
  5742		case MPI2_SCSI_STATUS_GOOD:
  5743			desc_scsi_status = "good";
  5744			break;
  5745		case MPI2_SCSI_STATUS_CHECK_CONDITION:
  5746			desc_scsi_status = "check condition";
  5747			break;
  5748		case MPI2_SCSI_STATUS_CONDITION_MET:
  5749			desc_scsi_status = "condition met";
  5750			break;
  5751		case MPI2_SCSI_STATUS_BUSY:
  5752			desc_scsi_status = "busy";
  5753			break;
  5754		case MPI2_SCSI_STATUS_INTERMEDIATE:
  5755			desc_scsi_status = "intermediate";
  5756			break;
  5757		case MPI2_SCSI_STATUS_INTERMEDIATE_CONDMET:
  5758			desc_scsi_status = "intermediate condmet";
  5759			break;
  5760		case MPI2_SCSI_STATUS_RESERVATION_CONFLICT:
  5761			desc_scsi_status = "reservation conflict";
  5762			break;
  5763		case MPI2_SCSI_STATUS_COMMAND_TERMINATED:
  5764			desc_scsi_status = "command terminated";
  5765			break;
  5766		case MPI2_SCSI_STATUS_TASK_SET_FULL:
  5767			desc_scsi_status = "task set full";
  5768			break;
  5769		case MPI2_SCSI_STATUS_ACA_ACTIVE:
  5770			desc_scsi_status = "aca active";
  5771			break;
  5772		case MPI2_SCSI_STATUS_TASK_ABORTED:
  5773			desc_scsi_status = "task aborted";
  5774			break;
  5775		default:
  5776			desc_scsi_status = "unknown";
  5777			break;
  5778		}
  5779	
  5780		if (!scsi_state)
  5781			desc_scsi_state = " ";
  5782		else
> 5783			snprintf(desc_scsi_state, MPT_STRING_LENGTH, "%s%s%s%s%s",
  5784				 (scsi_state & MPI2_SCSI_STATE_RESPONSE_INFO_VALID) ?
  5785				 "response info " : "",
  5786				 (scsi_state & MPI2_SCSI_STATE_TERMINATED) ?
  5787				 "state terminated " : "",
  5788				 (scsi_state & MPI2_SCSI_STATE_NO_SCSI_STATUS) ?
  5789				 "no status " : "",
  5790				 (scsi_state & MPI2_SCSI_STATE_AUTOSENSE_FAILED) ?
  5791				 "autosense failed " : "",
  5792				 (scsi_state & MPI2_SCSI_STATE_AUTOSENSE_VALID) ?
  5793				 "autosense valid " : "");
  5794	
  5795		scsi_print_command(scmd);
  5796	
  5797		if (priv_target->flags & MPT_TARGET_FLAGS_VOLUME) {
  5798			ioc_warn(ioc, "\t%s wwid(0x%016llx)\n",
  5799				 device_str, (u64)priv_target->sas_address);
  5800		} else if (priv_target->flags & MPT_TARGET_FLAGS_PCIE_DEVICE) {
  5801			pcie_device = mpt3sas_get_pdev_from_target(ioc, priv_target);
  5802			if (pcie_device) {
  5803				ioc_info(ioc, "\twwid(0x%016llx), port(%d)\n",
  5804					 (u64)pcie_device->wwid, pcie_device->port_num);
  5805				if (pcie_device->enclosure_handle != 0)
  5806					ioc_info(ioc, "\tenclosure logical id(0x%016llx), slot(%d)\n",
  5807						 (u64)pcie_device->enclosure_logical_id,
  5808						 pcie_device->slot);
  5809				if (pcie_device->connector_name[0])
  5810					ioc_info(ioc, "\tenclosure level(0x%04x), connector name( %s)\n",
  5811						 pcie_device->enclosure_level,
  5812						 pcie_device->connector_name);
  5813				pcie_device_put(pcie_device);
  5814			}
  5815		} else {
  5816			sas_device = mpt3sas_get_sdev_from_target(ioc, priv_target);
  5817			if (sas_device) {
  5818				ioc_warn(ioc, "\tsas_address(0x%016llx), phy(%d)\n",
  5819					 (u64)sas_device->sas_address, sas_device->phy);
  5820	
  5821				_scsih_display_enclosure_chassis_info(ioc, sas_device,
  5822				    NULL, NULL);
  5823	
  5824				sas_device_put(sas_device);
  5825			}
  5826		}
  5827	
  5828		ioc_warn(ioc, "\thandle(0x%04x), ioc_status(%s)(0x%04x), smid(%d)\n",
  5829			 le16_to_cpu(mpi_reply->DevHandle),
  5830			 desc_ioc_state, ioc_status, smid);
  5831		ioc_warn(ioc, "\trequest_len(%d), underflow(%d), resid(%d)\n",
  5832			 scsi_bufflen(scmd), scmd->underflow, scsi_get_resid(scmd));
  5833		ioc_warn(ioc, "\ttag(%d), transfer_count(%d), sc->result(0x%08x)\n",
  5834			 le16_to_cpu(mpi_reply->TaskTag),
  5835			 le32_to_cpu(mpi_reply->TransferCount), scmd->result);
  5836		ioc_warn(ioc, "\tscsi_status(%s)(0x%02x), scsi_state(%s)(0x%02x)\n",
  5837			 desc_scsi_status, scsi_status, desc_scsi_state, scsi_state);
  5838	
  5839		if (scsi_state & MPI2_SCSI_STATE_AUTOSENSE_VALID) {
  5840			struct sense_info data;
  5841			_scsih_normalize_sense(scmd->sense_buffer, &data);
  5842			ioc_warn(ioc, "\t[sense_key,asc,ascq]: [0x%02x,0x%02x,0x%02x], count(%d)\n",
  5843				 data.skey, data.asc, data.ascq,
  5844				 le32_to_cpu(mpi_reply->SenseCount));
  5845		}
  5846		if (scsi_state & MPI2_SCSI_STATE_RESPONSE_INFO_VALID) {
  5847			response_info = le32_to_cpu(mpi_reply->ResponseInfo);
  5848			response_bytes = (u8 *)&response_info;
  5849			_scsih_response_code(ioc, response_bytes[0]);
  5850		}
  5851	}
  5852	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2026-11-06 11:17 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06  0:42 [PATCH 00/37] scsi: mpt3sas: Validate firmware/user input and fix error-path bugs Shivasharan S
2026-11-06  0:42 ` [PATCH 01/37] scsi: mpt3sas: Validate firmware-reported IOCRequestFrameSize Shivasharan S
2026-11-06  1:17   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 02/37] scsi: mpt3sas: Validate RAID configuration page length Shivasharan S
2026-11-06  1:15   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 03/37] scsi: mpt3sas: Pin Scsi_Host while an ioctl is using its ioc Shivasharan S
2026-11-06  1:19   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 04/37] scsi: mpt3sas: Fix locking and bounds checks on host_trace_buffer sysfs files Shivasharan S
2026-11-06  1:25   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 05/37] scsi: mpt3sas: Fix unlocked use of raid_device in enable_sdev_max_qd_store Shivasharan S
2026-11-06  0:42 ` [PATCH 06/37] scsi: mpt3sas: Fix invalid kfree() of fw_event_work event_data Shivasharan S
2026-11-06  0:42 ` [PATCH 07/37] scsi: mpt3sas: Validate SMP request/response length in bsg handler Shivasharan S
2026-11-06  1:17   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 08/37] scsi: mpt3sas: Validate firmware/user supplied device handles against MaxDevHandle Shivasharan S
2026-11-06  1:15   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 09/37] scsi: mpt3sas: Clamp topology/IR event entry counts to EventDataLength Shivasharan S
2026-11-06  1:13   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 10/37] scsi: mpt3sas: NULL ioc->reply_post after freeing it Shivasharan S
2026-11-06  0:42 ` [PATCH 11/37] scsi: mpt3sas: Fix port_table memory leak in _scsih_sas_port_refresh Shivasharan S
2026-11-06  0:42 ` [PATCH 12/37] scsi: mpt3sas: Fix leak and dangling pointer for io_uring_poll_queues Shivasharan S
2026-11-06  0:42 ` [PATCH 13/37] scsi: mpt3sas: Validate max_data_size in MPT3EVENTREPORT ioctl Shivasharan S
2026-11-06  0:42 ` [PATCH 14/37] scsi: mpt3sas: Fix buffer overflow in _scsih_scsi_ioc_info Shivasharan S
2026-11-06 11:16   ` kernel test robot [this message]
2026-11-06 11:30   ` kernel test robot
2026-11-06  0:42 ` [PATCH 15/37] scsi: mpt3sas: Fix Scsi_Host leak on invalid/tampered device probe Shivasharan S
2026-11-06  0:42 ` [PATCH 16/37] scsi: mpt3sas: Fix page fault from stale ioc->chip after PCI error recovery Shivasharan S
2026-11-06  1:22   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 17/37] scsi: mpt3sas: Clamp ValidEntries in driver trigger page update helpers Shivasharan S
2026-11-06  1:09   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 18/37] scsi: mpt3sas: Clamp firmware reply copies to the allocated reply buffer Shivasharan S
2026-11-06  0:42 ` [PATCH 19/37] scsi: mpt3sas: Reject implausibly small MaxReplyDescriptorPostQueueDepth Shivasharan S
2026-11-06  1:17   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 20/37] scsi: mpt3sas: Validate CurrentHostPageSize before using it as a shift amount Shivasharan S
2026-11-06  1:12   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 21/37] scsi: mpt3sas: Clamp sense_length before copying into transfer_packet->sense Shivasharan S
2026-11-06  0:42 ` [PATCH 22/37] scsi: mpt3sas: Clamp num_luns in _scsih_wait_for_target_to_become_ready Shivasharan S
2026-11-06  0:42 ` [PATCH 23/37] scsi: mpt3sas: Validate phy_number in mpt3sas_transport_update_links Shivasharan S
2026-11-06  1:11   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 24/37] scsi: mpt3sas: Require CAP_SYS_RAWIO for mpt2ctl/mpt3ctl ioctls Shivasharan S
2026-11-06  0:42 ` [PATCH 25/37] scsi: mpt3sas: Fix SGE offset boundary check in _ctl_do_mpt_command Shivasharan S
2026-11-06  0:42 ` [PATCH 26/37] scsi: mpt3sas: Enforce minimum reply frame size and validate chain segment size Shivasharan S
2026-11-06  1:24   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 27/37] scsi: mpt3sas: Replace panic() with error return in hard_reset_handler Shivasharan S
2026-11-06  0:42 ` [PATCH 28/37] scsi: mpt3sas: Replace panic() calls with error returns in _config_request Shivasharan S
2026-11-06  1:18   ` sashiko-bot
2026-11-06  0:42 ` [PATCH 29/37] scsi: mpt3sas: Bound event-log copy size against reply frame size Shivasharan S
2026-11-06  0:42 ` [PATCH 30/37] scsi: mpt3sas: Add _ctl_diag_buffer_reset() helper to clear diag buffer state Shivasharan S
2026-11-06  0:42 ` [PATCH 31/37] scsi: mpt3sas: Restrict ioc_dump debugfs and replace raw ioc dump with text Shivasharan S
2026-11-06  0:42 ` [PATCH 32/37] scsi: mpt3sas: Fix out-of-bounds bit operation in _scsih_check_topo_delete_events Shivasharan S
2026-11-06  0:42 ` [PATCH 33/37] scsi: mpt3sas: Bound SMP passthrough buffer reads to actual buffer size Shivasharan S
2026-11-06  0:42 ` [PATCH 34/37] scsi: mpt3sas: Release sas_device reference on error in mpt3sas_transport_port_add Shivasharan S
2026-11-06  0:42 ` [PATCH 35/37] scsi: mpt3sas: NULL the event_log pointer after freeing it Shivasharan S
2026-11-06  0:42 ` [PATCH 36/37] scsi: mpt3sas: Bound NVMe passthrough transfer size against PRP buffer capacity Shivasharan S
2026-11-06  0:42 ` [PATCH 37/37] scsi: mpt3sas: Update driver version to 59.100.00.00 Shivasharan S
2026-11-06  1:37   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202611061833.3AceeVtV-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=chandrakanth.patil@broadcom.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=ranjan.kumar@broadcom.com \
    --cc=sathya.prakash@broadcom.com \
    --cc=shivasharan.srikanteshwara@broadcom.com \
    --cc=sweeti.vandure@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.