mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 22:24:11 +08:00
Merge patch series "scsi: replace deprecated strncpy"
Justin Stitt <justinstitt@google.com> says: This series contains multiple replacements of strncpy throughout the scsi subsystem. strncpy() is deprecated for use on NUL-terminated destination strings [1] and as such we should prefer more robust and less ambiguous string interfaces. The details of each replacement will be in their respective patch. Link: https://lore.kernel.org/r/20240305-strncpy-drivers-scsi-mpi3mr-mpi3mr_fw-c-v3-0-5b78a13ff984@google.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
commit
5fcc60dc74
@ -1351,7 +1351,7 @@ static int qed_slowpath_start(struct qed_dev *cdev,
|
||||
(params->drv_rev << 8) |
|
||||
(params->drv_eng);
|
||||
strscpy(drv_version.name, params->name,
|
||||
MCP_DRV_VER_STR_SIZE - 4);
|
||||
sizeof(drv_version.name));
|
||||
rc = qed_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
|
||||
&drv_version);
|
||||
if (rc) {
|
||||
|
@ -3676,7 +3676,7 @@ static const struct {
|
||||
* mpi3mr_print_ioc_info - Display controller information
|
||||
* @mrioc: Adapter instance reference
|
||||
*
|
||||
* Display controller personalit, capability, supported
|
||||
* Display controller personality, capability, supported
|
||||
* protocols etc.
|
||||
*
|
||||
* Return: Nothing
|
||||
@ -3685,20 +3685,20 @@ static void
|
||||
mpi3mr_print_ioc_info(struct mpi3mr_ioc *mrioc)
|
||||
{
|
||||
int i = 0, bytes_written = 0;
|
||||
char personality[16];
|
||||
const char *personality;
|
||||
char protocol[50] = {0};
|
||||
char capabilities[100] = {0};
|
||||
struct mpi3mr_compimg_ver *fwver = &mrioc->facts.fw_ver;
|
||||
|
||||
switch (mrioc->facts.personality) {
|
||||
case MPI3_IOCFACTS_FLAGS_PERSONALITY_EHBA:
|
||||
strncpy(personality, "Enhanced HBA", sizeof(personality));
|
||||
personality = "Enhanced HBA";
|
||||
break;
|
||||
case MPI3_IOCFACTS_FLAGS_PERSONALITY_RAID_DDR:
|
||||
strncpy(personality, "RAID", sizeof(personality));
|
||||
personality = "RAID";
|
||||
break;
|
||||
default:
|
||||
strncpy(personality, "Unknown", sizeof(personality));
|
||||
personality = "Unknown";
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -4774,7 +4774,7 @@ _base_display_ioc_capabilities(struct MPT3SAS_ADAPTER *ioc)
|
||||
char desc[17] = {0};
|
||||
u32 iounit_pg1_flags;
|
||||
|
||||
strncpy(desc, ioc->manu_pg0.ChipName, 16);
|
||||
strscpy(desc, ioc->manu_pg0.ChipName, sizeof(desc));
|
||||
ioc_info(ioc, "%s: FWVersion(%02d.%02d.%02d.%02d), ChipRevision(0x%02x)\n",
|
||||
desc,
|
||||
(ioc->facts.FWVersion.Word & 0xFF000000) >> 24,
|
||||
|
@ -458,17 +458,17 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
|
||||
goto out;
|
||||
|
||||
manufacture_reply = data_out + sizeof(struct rep_manu_request);
|
||||
strncpy(edev->vendor_id, manufacture_reply->vendor_id,
|
||||
SAS_EXPANDER_VENDOR_ID_LEN);
|
||||
strncpy(edev->product_id, manufacture_reply->product_id,
|
||||
SAS_EXPANDER_PRODUCT_ID_LEN);
|
||||
strncpy(edev->product_rev, manufacture_reply->product_rev,
|
||||
SAS_EXPANDER_PRODUCT_REV_LEN);
|
||||
strscpy(edev->vendor_id, manufacture_reply->vendor_id,
|
||||
sizeof(edev->vendor_id));
|
||||
strscpy(edev->product_id, manufacture_reply->product_id,
|
||||
sizeof(edev->product_id));
|
||||
strscpy(edev->product_rev, manufacture_reply->product_rev,
|
||||
sizeof(edev->product_rev));
|
||||
edev->level = manufacture_reply->sas_format & 1;
|
||||
if (edev->level) {
|
||||
strncpy(edev->component_vendor_id,
|
||||
manufacture_reply->component_vendor_id,
|
||||
SAS_EXPANDER_COMPONENT_VENDOR_ID_LEN);
|
||||
strscpy(edev->component_vendor_id,
|
||||
manufacture_reply->component_vendor_id,
|
||||
sizeof(edev->component_vendor_id));
|
||||
tmp = (u8 *)&manufacture_reply->component_id;
|
||||
edev->component_id = tmp[0] << 8 | tmp[1];
|
||||
edev->component_revision_id =
|
||||
|
@ -3468,7 +3468,7 @@ retry_probe:
|
||||
slowpath_params.drv_minor = QEDF_DRIVER_MINOR_VER;
|
||||
slowpath_params.drv_rev = QEDF_DRIVER_REV_VER;
|
||||
slowpath_params.drv_eng = QEDF_DRIVER_ENG_VER;
|
||||
strncpy(slowpath_params.name, "qedf", QED_DRV_VER_STR_SIZE);
|
||||
strscpy(slowpath_params.name, "qedf", sizeof(slowpath_params.name));
|
||||
rc = qed_ops->common->slowpath_start(qedf->cdev, &slowpath_params);
|
||||
if (rc) {
|
||||
QEDF_ERR(&(qedf->dbg_ctx), "Cannot start slowpath.\n");
|
||||
|
@ -1641,6 +1641,7 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
|
||||
struct ql4_chap_table *chap_table;
|
||||
uint32_t chap_size = 0;
|
||||
dma_addr_t chap_dma;
|
||||
ssize_t secret_len;
|
||||
|
||||
chap_table = dma_pool_zalloc(ha->chap_dma_pool, GFP_KERNEL, &chap_dma);
|
||||
if (chap_table == NULL) {
|
||||
@ -1652,9 +1653,13 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
|
||||
chap_table->flags |= BIT_6; /* peer */
|
||||
else
|
||||
chap_table->flags |= BIT_7; /* local */
|
||||
chap_table->secret_len = strlen(password);
|
||||
strncpy(chap_table->secret, password, MAX_CHAP_SECRET_LEN - 1);
|
||||
strncpy(chap_table->name, username, MAX_CHAP_NAME_LEN - 1);
|
||||
|
||||
secret_len = strscpy(chap_table->secret, password,
|
||||
sizeof(chap_table->secret));
|
||||
if (secret_len < MIN_CHAP_SECRET_LEN)
|
||||
goto cleanup_chap_table;
|
||||
chap_table->secret_len = (uint8_t)secret_len;
|
||||
strscpy(chap_table->name, username, sizeof(chap_table->name));
|
||||
chap_table->cookie = cpu_to_le16(CHAP_VALID_COOKIE);
|
||||
|
||||
if (is_qla40XX(ha)) {
|
||||
@ -1679,6 +1684,8 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
|
||||
memcpy((struct ql4_chap_table *)ha->chap_list + idx,
|
||||
chap_table, sizeof(struct ql4_chap_table));
|
||||
}
|
||||
|
||||
cleanup_chap_table:
|
||||
dma_pool_free(ha->chap_dma_pool, chap_table, chap_dma);
|
||||
if (rval != QLA_SUCCESS)
|
||||
ret = -EINVAL;
|
||||
@ -2281,8 +2288,8 @@ int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param)
|
||||
mbox_cmd[0] = MBOX_CMD_SET_PARAM;
|
||||
if (param == SET_DRVR_VERSION) {
|
||||
mbox_cmd[1] = SET_DRVR_VERSION;
|
||||
strncpy((char *)&mbox_cmd[2], QLA4XXX_DRIVER_VERSION,
|
||||
MAX_DRVR_VER_LEN - 1);
|
||||
strscpy((char *)&mbox_cmd[2], QLA4XXX_DRIVER_VERSION,
|
||||
MAX_DRVR_VER_LEN);
|
||||
} else {
|
||||
ql4_printk(KERN_ERR, ha, "%s: invalid parameter 0x%x\n",
|
||||
__func__, param);
|
||||
|
@ -799,10 +799,10 @@ static int qla4xxx_get_chap_list(struct Scsi_Host *shost, uint16_t chap_tbl_idx,
|
||||
|
||||
chap_rec->chap_tbl_idx = i;
|
||||
strscpy(chap_rec->username, chap_table->name,
|
||||
ISCSI_CHAP_AUTH_NAME_MAX_LEN);
|
||||
strscpy(chap_rec->password, chap_table->secret,
|
||||
QL4_CHAP_MAX_SECRET_LEN);
|
||||
chap_rec->password_length = chap_table->secret_len;
|
||||
sizeof(chap_rec->username));
|
||||
chap_rec->password_length = strscpy(chap_rec->password,
|
||||
chap_table->secret,
|
||||
sizeof(chap_rec->password));
|
||||
|
||||
if (chap_table->flags & BIT_7) /* local */
|
||||
chap_rec->chap_type = CHAP_TYPE_OUT;
|
||||
@ -6291,8 +6291,8 @@ static void qla4xxx_get_param_ddb(struct ddb_entry *ddb_entry,
|
||||
|
||||
tddb->tpgt = sess->tpgt;
|
||||
tddb->port = conn->persistent_port;
|
||||
strscpy(tddb->iscsi_name, sess->targetname, ISCSI_NAME_SIZE);
|
||||
strscpy(tddb->ip_addr, conn->persistent_address, DDB_IPADDR_LEN);
|
||||
strscpy(tddb->iscsi_name, sess->targetname, sizeof(tddb->iscsi_name));
|
||||
strscpy(tddb->ip_addr, conn->persistent_address, sizeof(tddb->ip_addr));
|
||||
}
|
||||
|
||||
static void qla4xxx_convert_param_ddb(struct dev_db_entry *fw_ddb_entry,
|
||||
@ -7792,7 +7792,7 @@ static int qla4xxx_sysfs_ddb_logout(struct iscsi_bus_flash_session *fnode_sess,
|
||||
}
|
||||
|
||||
strscpy(flash_tddb->iscsi_name, fnode_sess->targetname,
|
||||
ISCSI_NAME_SIZE);
|
||||
sizeof(flash_tddb->iscsi_name));
|
||||
|
||||
if (!strncmp(fnode_sess->portal_type, PORTAL_TYPE_IPV6, 4))
|
||||
sprintf(flash_tddb->ip_addr, "%pI6", fnode_conn->ipaddress);
|
||||
|
@ -293,14 +293,16 @@ static void scsi_strcpy_devinfo(char *name, char *to, size_t to_length,
|
||||
size_t from_length;
|
||||
|
||||
from_length = strlen(from);
|
||||
/* This zero-pads the destination */
|
||||
strncpy(to, from, to_length);
|
||||
if (from_length < to_length && !compatible) {
|
||||
/*
|
||||
* space pad the string if it is short.
|
||||
*/
|
||||
memset(&to[from_length], ' ', to_length - from_length);
|
||||
}
|
||||
|
||||
/*
|
||||
* null pad and null terminate if compatible
|
||||
* otherwise space pad
|
||||
*/
|
||||
if (compatible)
|
||||
strscpy_pad(to, from, to_length);
|
||||
else
|
||||
memcpy_and_pad(to, to_length, from, from_length, ' ');
|
||||
|
||||
if (from_length > to_length)
|
||||
printk(KERN_WARNING "%s: %s string '%s' is too long\n",
|
||||
__func__, name, from);
|
||||
|
@ -1041,9 +1041,8 @@ static int pqi_write_driver_version_to_host_wellness(
|
||||
buffer->driver_version_tag[1] = 'V';
|
||||
put_unaligned_le16(sizeof(buffer->driver_version),
|
||||
&buffer->driver_version_length);
|
||||
strncpy(buffer->driver_version, "Linux " DRIVER_VERSION,
|
||||
sizeof(buffer->driver_version) - 1);
|
||||
buffer->driver_version[sizeof(buffer->driver_version) - 1] = '\0';
|
||||
strscpy(buffer->driver_version, "Linux " DRIVER_VERSION,
|
||||
sizeof(buffer->driver_version));
|
||||
buffer->dont_write_tag[0] = 'D';
|
||||
buffer->dont_write_tag[1] = 'W';
|
||||
buffer->end_tag[0] = 'Z';
|
||||
|
@ -1721,9 +1721,7 @@ wd33c93_setup(char *str)
|
||||
p1 = setup_buffer;
|
||||
*p1 = '\0';
|
||||
if (str)
|
||||
strncpy(p1, str, SETUP_BUFFER_SIZE - strlen(setup_buffer));
|
||||
setup_buffer[SETUP_BUFFER_SIZE - 1] = '\0';
|
||||
p1 = setup_buffer;
|
||||
strscpy(p1, str, SETUP_BUFFER_SIZE);
|
||||
i = 0;
|
||||
while (*p1 && (i < MAX_SETUP_ARGS)) {
|
||||
p2 = strchr(p1, ',');
|
||||
|
Loading…
Reference in New Issue
Block a user