IB/qib: Fix txselect regression
Commit 7fac33014f54("IB/qib: checkpatch fixes") was overzealous in removing a simple_strtoul for a parse routine, setup_txselect(). That routine is required to handle a multi-value string. Unwind that aspect of the fix. Cc: <stable@vger.kernel.org> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
78a5886472
commit
2fadd83184
@ -6190,21 +6190,20 @@ static int setup_txselect(const char *str, struct kernel_param *kp)
|
|||||||
{
|
{
|
||||||
struct qib_devdata *dd;
|
struct qib_devdata *dd;
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
int ret;
|
char *n;
|
||||||
|
|
||||||
if (strlen(str) >= MAX_ATTEN_LEN) {
|
if (strlen(str) >= MAX_ATTEN_LEN) {
|
||||||
pr_info("txselect_values string too long\n");
|
pr_info("txselect_values string too long\n");
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
}
|
}
|
||||||
ret = kstrtoul(str, 0, &val);
|
val = simple_strtoul(str, &n, 0);
|
||||||
if (ret || val >= (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ +
|
if (n == str || val >= (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ +
|
||||||
TXDDS_MFG_SZ)) {
|
TXDDS_MFG_SZ)) {
|
||||||
pr_info("txselect_values must start with a number < %d\n",
|
pr_info("txselect_values must start with a number < %d\n",
|
||||||
TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + TXDDS_MFG_SZ);
|
TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + TXDDS_MFG_SZ);
|
||||||
return ret ? ret : -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(txselect_list, str);
|
strcpy(txselect_list, str);
|
||||||
|
|
||||||
list_for_each_entry(dd, &qib_dev_list, list)
|
list_for_each_entry(dd, &qib_dev_list, list)
|
||||||
if (dd->deviceid == PCI_DEVICE_ID_QLOGIC_IB_7322)
|
if (dd->deviceid == PCI_DEVICE_ID_QLOGIC_IB_7322)
|
||||||
set_no_qsfp_atten(dd, 1);
|
set_no_qsfp_atten(dd, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user