Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2640111 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
  [SCSI] qla2xxx: Return DID_NO_CONNECT when FC device is lost.
  [SCSI] mptfusion: Bump version 03.04.18
  [SCSI] mptfusion: Fix Incorrect return value in mptscsih_dev_reset
  [SCSI] mptfusion: mptctl_release is required in mptctl.c
  [SCSI] target: fix use after free detected by SLUB poison
  [SCSI] target: Remove procfs based target_core_mib.c code
  [SCSI] target: Fix SCF_SCSI_CONTROL_SG_IO_CDB breakage
  [SCSI] target: Fix top-level configfs_subsystem default_group shutdown breakage
  [SCSI] target: fixed missing lock drop in error path
  [SCSI] target: Fix demo-mode MappedLUN shutdown UA/PR breakage
  [SCSI] target/iblock: Fix failed bd claim NULL pointer dereference
  [SCSI] target: iblock/pscsi claim checking for NULL instead of IS_ERR
  [SCSI] scsi_debug: Fix 32-bit overflow in do_device_access causing memory corruption
  [SCSI] qla2xxx: Change from irq to irqsave with host_lock
  [SCSI] qla2xxx: Fix race that could hang kthread_stop()
parents 0d6e82e7 1621dbbd
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -76,8 +76,8 @@
#define COPYRIGHT	"Copyright (c) 1999-2008 " MODULEAUTHOR
#define COPYRIGHT	"Copyright (c) 1999-2008 " MODULEAUTHOR
#endif
#endif


#define MPT_LINUX_VERSION_COMMON	"3.04.17"
#define MPT_LINUX_VERSION_COMMON	"3.04.18"
#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-3.04.17"
#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-3.04.18"
#define WHAT_MAGIC_STRING		"@" "(" "#" ")"
#define WHAT_MAGIC_STRING		"@" "(" "#" ")"


#define show_mptmod_ver(s,ver)  \
#define show_mptmod_ver(s,ver)  \
+8 −0
Original line number Original line Diff line number Diff line
@@ -596,6 +596,13 @@ mptctl_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
	return 1;
	return 1;
}
}


static int
mptctl_release(struct inode *inode, struct file *filep)
{
	fasync_helper(-1, filep, 0, &async_queue);
	return 0;
}

static int
static int
mptctl_fasync(int fd, struct file *filep, int mode)
mptctl_fasync(int fd, struct file *filep, int mode)
{
{
@@ -2815,6 +2822,7 @@ static const struct file_operations mptctl_fops = {
	.llseek =	no_llseek,
	.llseek =	no_llseek,
	.fasync = 	mptctl_fasync,
	.fasync = 	mptctl_fasync,
	.unlocked_ioctl = mptctl_ioctl,
	.unlocked_ioctl = mptctl_ioctl,
	.release =	mptctl_release,
#ifdef CONFIG_COMPAT
#ifdef CONFIG_COMPAT
	.compat_ioctl = compat_mpctl_ioctl,
	.compat_ioctl = compat_mpctl_ioctl,
#endif
#endif
+4 −3
Original line number Original line Diff line number Diff line
@@ -1873,8 +1873,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
	}
	}


 out:
 out:
	printk(MYIOC_s_INFO_FMT "task abort: %s (sc=%p)\n",
	printk(MYIOC_s_INFO_FMT "task abort: %s (rv=%04x) (sc=%p) (sn=%ld)\n",
	    ioc->name, ((retval == SUCCESS) ? "SUCCESS" : "FAILED"), SCpnt);
	    ioc->name, ((retval == SUCCESS) ? "SUCCESS" : "FAILED"), retval,
	    SCpnt, SCpnt->serial_number);


	return retval;
	return retval;
}
}
@@ -1911,7 +1912,7 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)


	vdevice = SCpnt->device->hostdata;
	vdevice = SCpnt->device->hostdata;
	if (!vdevice || !vdevice->vtarget) {
	if (!vdevice || !vdevice->vtarget) {
		retval = SUCCESS;
		retval = 0;
		goto out;
		goto out;
	}
	}


+3 −2
Original line number Original line Diff line number Diff line
@@ -1561,6 +1561,7 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
{
{
	struct Scsi_Host *host = rport_to_shost(rport);
	struct Scsi_Host *host = rport_to_shost(rport);
	fc_port_t *fcport = *(fc_port_t **)rport->dd_data;
	fc_port_t *fcport = *(fc_port_t **)rport->dd_data;
	unsigned long flags;


	if (!fcport)
	if (!fcport)
		return;
		return;
@@ -1573,10 +1574,10 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
	 * Transport has effectively 'deleted' the rport, clear
	 * Transport has effectively 'deleted' the rport, clear
	 * all local references.
	 * all local references.
	 */
	 */
	spin_lock_irq(host->host_lock);
	spin_lock_irqsave(host->host_lock, flags);
	fcport->rport = fcport->drport = NULL;
	fcport->rport = fcport->drport = NULL;
	*((fc_port_t **)rport->dd_data) = NULL;
	*((fc_port_t **)rport->dd_data) = NULL;
	spin_unlock_irq(host->host_lock);
	spin_unlock_irqrestore(host->host_lock, flags);


	if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
	if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
		return;
		return;
+6 −4
Original line number Original line Diff line number Diff line
@@ -2505,11 +2505,12 @@ qla2x00_rport_del(void *data)
{
{
	fc_port_t *fcport = data;
	fc_port_t *fcport = data;
	struct fc_rport *rport;
	struct fc_rport *rport;
	unsigned long flags;


	spin_lock_irq(fcport->vha->host->host_lock);
	spin_lock_irqsave(fcport->vha->host->host_lock, flags);
	rport = fcport->drport ? fcport->drport: fcport->rport;
	rport = fcport->drport ? fcport->drport: fcport->rport;
	fcport->drport = NULL;
	fcport->drport = NULL;
	spin_unlock_irq(fcport->vha->host->host_lock);
	spin_unlock_irqrestore(fcport->vha->host->host_lock, flags);
	if (rport)
	if (rport)
		fc_remote_port_delete(rport);
		fc_remote_port_delete(rport);
}
}
@@ -2879,6 +2880,7 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport)
	struct fc_rport_identifiers rport_ids;
	struct fc_rport_identifiers rport_ids;
	struct fc_rport *rport;
	struct fc_rport *rport;
	struct qla_hw_data *ha = vha->hw;
	struct qla_hw_data *ha = vha->hw;
	unsigned long flags;


	qla2x00_rport_del(fcport);
	qla2x00_rport_del(fcport);


@@ -2893,9 +2895,9 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport)
		    "Unable to allocate fc remote port!\n");
		    "Unable to allocate fc remote port!\n");
		return;
		return;
	}
	}
	spin_lock_irq(fcport->vha->host->host_lock);
	spin_lock_irqsave(fcport->vha->host->host_lock, flags);
	*((fc_port_t **)rport->dd_data) = fcport;
	*((fc_port_t **)rport->dd_data) = fcport;
	spin_unlock_irq(fcport->vha->host->host_lock);
	spin_unlock_irqrestore(fcport->vha->host->host_lock, flags);


	rport->supported_classes = fcport->supported_classes;
	rport->supported_classes = fcport->supported_classes;


Loading