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

Commit f385b697 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '3.1-rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (21 commits)
  target: Convert acl_node_lock to be IRQ-disabling
  target: Make locking in transport_deregister_session() IRQ safe
  tcm_fc: init/exit functions should not be protected by "#ifdef MODULE"
  target: Print subpage too for unhandled MODE SENSE pages
  iscsi-target: Fix iscsit_allocate_se_cmd_for_tmr failure path bugs
  iscsi-target: Implement iSCSI target IPv6 address printing.
  target: Fix task SGL chaining breakage with transport_allocate_data_tasks
  target: Fix task count > 1 handling breakage and use max_sector page alignment
  target: Add missing DATA_SG_IO transport_cmd_get_valid_sectors check
  target: Fix SYNCHRONIZE_CACHE zero LBA + range breakage
  target: Remove duplicate task completions in transport_emulate_control_cdb
  target: Fix WRITE_SAME usage with transport_get_size
  target: Add WRITE_SAME (10) parsing and refactor passthrough checks
  target: Fix write payload exception handling with ->new_cmd_map
  iscsi-target: forever loop bug in iscsit_attach_ooo_cmdsn()
  iscsi-target: remove duplicate return
  target: Convert target_core_rd.c to use use BUG_ON
  iscsi-target: Fix leak on failure in iscsi_copy_param_list()
  target: Use ERR_CAST inlined function
  target: Make standard INQUIRY return 'not connected' for tpg_virt_lun0
  ...
parents be27425d 28638887
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -2243,7 +2243,6 @@ static int iscsit_handle_snack(
	case 0:
		return iscsit_handle_recovery_datain_or_r2t(conn, buf,
			hdr->itt, hdr->ttt, hdr->begrun, hdr->runlength);
		return 0;
	case ISCSI_FLAG_SNACK_TYPE_STATUS:
		return iscsit_handle_status_snack(conn, hdr->itt, hdr->ttt,
			hdr->begrun, hdr->runlength);
+2 −2
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ struct se_tpg_np *lio_target_call_addnptotpg(
				ISCSI_TCP);
	if (IS_ERR(tpg_np)) {
		iscsit_put_tpg(tpg);
		return ERR_PTR(PTR_ERR(tpg_np));
		return ERR_CAST(tpg_np);
	}
	pr_debug("LIO_Target_ConfigFS: addnptotpg done!\n");

@@ -1285,7 +1285,7 @@ struct se_wwn *lio_target_call_coreaddtiqn(

	tiqn = iscsit_add_tiqn((unsigned char *)name);
	if (IS_ERR(tiqn))
		return ERR_PTR(PTR_ERR(tiqn));
		return ERR_CAST(tiqn);
	/*
	 * Setup struct iscsi_wwn_stat_grps for se_wwn->fabric_stat_group.
	 */
+1 −1
Original line number Diff line number Diff line
@@ -834,7 +834,7 @@ static int iscsit_attach_ooo_cmdsn(
			 */
			list_for_each_entry(ooo_tmp, &sess->sess_ooo_cmdsn_list,
						ooo_list) {
				while (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn)
				if (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn)
					continue;

				list_add(&ooo_cmdsn->ooo_list,
+3 −13
Original line number Diff line number Diff line
@@ -1013,19 +1013,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
					ISCSI_LOGIN_STATUS_TARGET_ERROR);
			goto new_sess_out;
		}
#if 0
		if (!iscsi_ntop6((const unsigned char *)
				&sock_in6.sin6_addr.in6_u,
				(char *)&conn->ipv6_login_ip[0],
				IPV6_ADDRESS_SPACE)) {
			pr_err("iscsi_ntop6() failed\n");
			iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
					ISCSI_LOGIN_STATUS_TARGET_ERROR);
			goto new_sess_out;
		}
#else
		pr_debug("Skipping iscsi_ntop6()\n");
#endif
		snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
				&sock_in6.sin6_addr.in6_u);
		conn->login_port = ntohs(sock_in6.sin6_port);
	} else {
		memset(&sock_in, 0, sizeof(struct sockaddr_in));

+16 −27
Original line number Diff line number Diff line
@@ -545,13 +545,13 @@ int iscsi_copy_param_list(
	struct iscsi_param_list *src_param_list,
	int leading)
{
	struct iscsi_param *new_param = NULL, *param = NULL;
	struct iscsi_param *param = NULL;
	struct iscsi_param *new_param = NULL;
	struct iscsi_param_list *param_list = NULL;

	param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL);
	if (!param_list) {
		pr_err("Unable to allocate memory for"
				" struct iscsi_param_list.\n");
		pr_err("Unable to allocate memory for struct iscsi_param_list.\n");
		goto err_out;
	}
	INIT_LIST_HEAD(&param_list->param_list);
@@ -567,8 +567,17 @@ int iscsi_copy_param_list(

		new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL);
		if (!new_param) {
			pr_err("Unable to allocate memory for"
				" struct iscsi_param.\n");
			pr_err("Unable to allocate memory for struct iscsi_param.\n");
			goto err_out;
		}

		new_param->name = kstrdup(param->name, GFP_KERNEL);
		new_param->value = kstrdup(param->value, GFP_KERNEL);
		if (!new_param->value || !new_param->name) {
			kfree(new_param->value);
			kfree(new_param->name);
			kfree(new_param);
			pr_err("Unable to allocate memory for parameter name/value.\n");
			goto err_out;
		}

@@ -580,32 +589,12 @@ int iscsi_copy_param_list(
		new_param->use = param->use;
		new_param->type_range = param->type_range;

		new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
		if (!new_param->name) {
			pr_err("Unable to allocate memory for"
				" parameter name.\n");
			goto err_out;
		}

		new_param->value = kzalloc(strlen(param->value) + 1,
				GFP_KERNEL);
		if (!new_param->value) {
			pr_err("Unable to allocate memory for"
				" parameter value.\n");
			goto err_out;
		}

		memcpy(new_param->name, param->name, strlen(param->name));
		new_param->name[strlen(param->name)] = '\0';
		memcpy(new_param->value, param->value, strlen(param->value));
		new_param->value[strlen(param->value)] = '\0';

		list_add_tail(&new_param->p_list, &param_list->param_list);
	}

	if (!list_empty(&param_list->param_list))
	if (!list_empty(&param_list->param_list)) {
		*dst_param_list = param_list;
	else {
	} else {
		pr_err("No parameters allocated.\n");
		goto err_out;
	}
Loading