svn commit: r360686 - stable/11/sys/cam/ctl

Dimitry Andric dim at FreeBSD.org
Wed May 6 08:24:47 UTC 2020


Author: dim
Date: Wed May  6 08:24:47 2020
New Revision: 360686
URL: https://svnweb.freebsd.org/changeset/base/360686

Log:
  Revert r360682, as it does not compile on stable/11 (will commit a
  minimal indentation fix instead):
  
  Un-MFC r333465 (by lwhsu):
  
  Fix build for platforms using GCC:
  
  - Remove unused or dead store variable
  - Remove unused function ctl_copyin_alloc
  - Add missing curly brackets, this seems a regression in r287720
  
  Reviewed by:	jhibbits
  Differential Revision:	https://reviews.freebsd.org/D15383

Modified:
  stable/11/sys/cam/ctl/ctl.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/cam/ctl/ctl.c
==============================================================================
--- stable/11/sys/cam/ctl/ctl.c	Wed May  6 07:48:37 2020	(r360685)
+++ stable/11/sys/cam/ctl/ctl.c	Wed May  6 08:24:47 2020	(r360686)
@@ -2440,6 +2440,25 @@ ctl_ioctl_fill_ooa(struct ctl_lun *lun, uint32_t *cur_
 	mtx_unlock(&lun->lun_lock);
 }
 
+static void *
+ctl_copyin_alloc(void *user_addr, unsigned int len, char *error_str,
+		 size_t error_str_len)
+{
+	void *kptr;
+
+	kptr = malloc(len, M_CTL, M_WAITOK | M_ZERO);
+
+	if (copyin(user_addr, kptr, len) != 0) {
+		snprintf(error_str, error_str_len, "Error copying %d bytes "
+			 "from user address %p to kernel address %p", len,
+			 user_addr, kptr);
+		free(kptr, M_CTL);
+		return (NULL);
+	}
+
+	return (kptr);
+}
+
 static void
 ctl_free_args(int num_args, struct ctl_be_arg *args)
 {
@@ -5033,9 +5052,11 @@ ctl_lun_secondary(struct ctl_be_lun *be_lun)
 int
 ctl_invalidate_lun(struct ctl_be_lun *be_lun)
 {
+	struct ctl_softc *softc;
 	struct ctl_lun *lun;
 
 	lun = (struct ctl_lun *)be_lun->ctl_lun;
+	softc = lun->ctl_softc;
 
 	mtx_lock(&lun->lun_lock);
 
@@ -6231,7 +6252,7 @@ ctl_mode_select(struct ctl_scsiio *ctsio)
 {
 	struct ctl_lun *lun = CTL_LUN(ctsio);
 	union ctl_modepage_info *modepage_info;
-	int bd_len, i, header_size, param_len, rtd;
+	int bd_len, i, header_size, param_len, pf, rtd, sp;
 	uint32_t initidx;
 
 	initidx = ctl_get_initindex(&ctsio->io_hdr.nexus);
@@ -6241,7 +6262,9 @@ ctl_mode_select(struct ctl_scsiio *ctsio)
 
 		cdb = (struct scsi_mode_select_6 *)ctsio->cdb;
 
+		pf = (cdb->byte2 & SMS_PF) ? 1 : 0;
 		rtd = (cdb->byte2 & SMS_RTD) ? 1 : 0;
+		sp = (cdb->byte2 & SMS_SP) ? 1 : 0;
 		param_len = cdb->length;
 		header_size = sizeof(struct scsi_mode_header_6);
 		break;
@@ -6251,7 +6274,9 @@ ctl_mode_select(struct ctl_scsiio *ctsio)
 
 		cdb = (struct scsi_mode_select_10 *)ctsio->cdb;
 
+		pf = (cdb->byte2 & SMS_PF) ? 1 : 0;
 		rtd = (cdb->byte2 & SMS_RTD) ? 1 : 0;
+		sp = (cdb->byte2 & SMS_SP) ? 1 : 0;
 		param_len = scsi_2btoul(cdb->length);
 		header_size = sizeof(struct scsi_mode_header_10);
 		break;
@@ -6374,12 +6399,13 @@ int
 ctl_mode_sense(struct ctl_scsiio *ctsio)
 {
 	struct ctl_lun *lun = CTL_LUN(ctsio);
-	int pc, page_code, dbd, subpage;
+	int pc, page_code, dbd, llba, subpage;
 	int alloc_len, page_len, header_len, total_len;
 	struct scsi_mode_block_descr *block_desc;
 	struct ctl_page_index *page_index;
 
 	dbd = 0;
+	llba = 0;
 	block_desc = NULL;
 
 	CTL_DEBUG_PRINT(("ctl_mode_sense\n"));
@@ -6413,6 +6439,8 @@ ctl_mode_sense(struct ctl_scsiio *ctsio)
 			dbd = 1;
 		else
 			header_len += sizeof(struct scsi_mode_block_descr);
+		if (cdb->byte2 & SMS10_LLBAA)
+			llba = 1;
 		pc = (cdb->page & SMS_PAGE_CTRL_MASK) >> 6;
 		page_code = cdb->page & SMS_PAGE_CODE;
 		subpage = cdb->subpage;
@@ -8563,11 +8591,10 @@ ctl_hndl_per_res_out_on_other_sc(union ctl_io *io)
 		if (lun->pr_res_type != SPR_TYPE_EX_AC &&
 		    lun->pr_res_type != SPR_TYPE_WR_EX &&
 		    (lun->MODE_CTRL.queue_flags & SCP_NUAR) == 0) {
-			for (i = softc->init_min; i < softc->init_max; i++) {
+			for (i = softc->init_min; i < softc->init_max; i++)
 				if (i == residx || ctl_get_prkey(lun, i) == 0)
 					continue;
 				ctl_est_ua(lun, i, CTL_UA_RES_RELEASE);
-			}
 		}
 
 		lun->flags &= ~CTL_LUN_PR_RESERVED;
@@ -10375,6 +10402,7 @@ ctl_get_event_status(struct ctl_scsiio *ctsio)
 	struct scsi_get_event_status_header *hdr;
 	struct scsi_get_event_status *cdb;
 	uint32_t alloc_len, data_len;
+	int notif_class;
 
 	cdb = (struct scsi_get_event_status *)ctsio->cdb;
 	if ((cdb->byte2 & SGESN_POLLED) == 0) {
@@ -10383,6 +10411,7 @@ ctl_get_event_status(struct ctl_scsiio *ctsio)
 		ctl_done((union ctl_io *)ctsio);
 		return (CTL_RETVAL_COMPLETE);
 	}
+	notif_class = cdb->notif_class;
 	alloc_len = scsi_2btoul(cdb->length);
 
 	data_len = sizeof(struct scsi_get_event_status_header);


More information about the svn-src-all mailing list