Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull target updates from Nicholas Bellinger: "It has been a very busy development cycle this time around in target land, with the highlights including: - Kill struct se_subsystem_dev, in favor of direct se_device usage (hch) - Simplify reservations code by combining SPC-3 + SCSI-2 support for virtual backends only (hch) - Simplify ALUA code for virtual only backends, and remove left over abstractions (hch) - Pass sense_reason_t as return value for I/O submission path (hch) - Refactor MODE_SENSE emulation to allow for easier addition of new mode pages. (roland) - Add emulation of MODE_SELECT (roland) - Fix bug in handling of ExpStatSN wrap-around (steve) - Fix bug in TMR ABORT_TASK lookup in qla2xxx target (steve) - Add WRITE_SAME w/ UNMAP=0 support for IBLOCK backends (nab) - Convert ib_srpt to use modern target_submit_cmd caller + drop legacy ioctx->kref usage (nab) - Convert ib_srpt to use modern target_submit_tmr caller (nab) - Add link_magic for fabric allow_link destination target_items for symlinks within target_core_fabric_configfs.c code (nab) - Allocate pointers in instead of full structs for config_group->default_groups (sebastian) - Fix 32-bit highmem breakage for FILEIO (sebastian) All told, hch was able to shave off another ~1K LOC by killing the se_subsystem_dev abstraction, along with a number of PR + ALUA simplifications. Also, a nice patch by Roland is the refactoring of MODE_SENSE handling, along with the addition of initial MODE_SELECT emulation support for virtual backends. Sebastian found a long-standing issue wrt to allocation of full config_group instead of pointers for config_group->default_group[] setup in a number of areas, which ends up saving memory with big configurations. He also managed to fix another long-standing BUG wrt to broken 32-bit highmem support within the FILEIO backend driver. Thank you again to everyone who contributed this round!" * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (50 commits) target/iscsi_target: Add NodeACL tags for initiator group support target/tcm_fc: fix the lockdep warning due to inconsistent lock state sbp-target: fix error path in sbp_make_tpg() sbp-target: use simple assignment in tgt_agent_rw_agent_state() iscsi-target: use kstrdup() for iscsi_param target/file: merge fd_do_readv() and fd_do_writev() target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping target: Add link_magic for fabric allow_link destination target_items ib_srpt: Convert TMR path to target_submit_tmr ib_srpt: Convert I/O path to target_submit_cmd + drop legacy ioctx->kref target: Make spc_get_write_same_sectors return sector_t target/configfs: use kmalloc() instead of kzalloc() for default groups target/configfs: allocate only 6 slots for dev_cg->default_groups target/configfs: allocate pointers instead of full struct for default_groups target: update error handling for sbc_setup_write_same() iscsit: use GFP_ATOMIC under spin lock iscsi_target: Remove redundant null check before kfree target/iblock: Forward declare bio helpers target: Clean up flow in transport_check_aborted_status() target: Clean up logic in transport_put_cmd() ...
This commit is contained in:
@@ -154,22 +154,18 @@ static struct iscsi_param *iscsi_set_default_param(struct iscsi_param_list *para
|
||||
}
|
||||
INIT_LIST_HEAD(¶m->p_list);
|
||||
|
||||
param->name = kzalloc(strlen(name) + 1, GFP_KERNEL);
|
||||
param->name = kstrdup(name, GFP_KERNEL);
|
||||
if (!param->name) {
|
||||
pr_err("Unable to allocate memory for parameter name.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
param->value = kzalloc(strlen(value) + 1, GFP_KERNEL);
|
||||
param->value = kstrdup(value, GFP_KERNEL);
|
||||
if (!param->value) {
|
||||
pr_err("Unable to allocate memory for parameter value.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
memcpy(param->name, name, strlen(name));
|
||||
param->name[strlen(name)] = '\0';
|
||||
memcpy(param->value, value, strlen(value));
|
||||
param->value[strlen(value)] = '\0';
|
||||
param->phase = phase;
|
||||
param->scope = scope;
|
||||
param->sender = sender;
|
||||
@@ -635,11 +631,8 @@ void iscsi_release_param_list(struct iscsi_param_list *param_list)
|
||||
list_del(¶m->p_list);
|
||||
|
||||
kfree(param->name);
|
||||
param->name = NULL;
|
||||
kfree(param->value);
|
||||
param->value = NULL;
|
||||
kfree(param);
|
||||
param = NULL;
|
||||
}
|
||||
|
||||
iscsi_release_extra_responses(param_list);
|
||||
@@ -687,15 +680,12 @@ int iscsi_update_param_value(struct iscsi_param *param, char *value)
|
||||
{
|
||||
kfree(param->value);
|
||||
|
||||
param->value = kzalloc(strlen(value) + 1, GFP_KERNEL);
|
||||
param->value = kstrdup(value, GFP_KERNEL);
|
||||
if (!param->value) {
|
||||
pr_err("Unable to allocate memory for value.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memcpy(param->value, value, strlen(value));
|
||||
param->value[strlen(value)] = '\0';
|
||||
|
||||
pr_debug("iSCSI Parameter updated to %s=%s\n",
|
||||
param->name, param->value);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user