From 59c21f29591c8e2cb5aa1b95bfa75ef30d6d7302 Mon Sep 17 00:00:00 2001 From: brandon_chuang Date: Mon, 21 Jan 2019 15:04:19 +0800 Subject: [PATCH] [as5916-54xks] Enhance code per comment by Billie --- .../builds/x86-64-accton-as5916-54xks-sfp.c | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c index 2063a241..e617c3f6 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c @@ -1439,26 +1439,27 @@ static ssize_t set_phy(struct device *dev, struct device_attribute *da, /* Parsing command into tokens */ token = __strtok_r(command, delim, &last); while (token != NULL) { - long param = 0; + unsigned long param = 0; - status = kstrtol(token, 0, ¶m); + status = kstrtoul(token, 0, ¶m); if (status) { - return status; + goto exit_free; } /* Validate each param length */ if (param > 0xFF) { - return -EINVAL; + status = -EINVAL; + goto exit_free; } ipmi_phy_tx_data[i++] = param; token = __strtok_r(NULL, delim, &last); } - /* Validate command */ if (i <= IPMI_PHY_HEADER_LEN || (i != IPMI_PHY_DATA_LEN(wdata.ipmi_tx_data[2]))) { - return -EINVAL; + status = -EINVAL; + goto exit_free; } mutex_lock(&data->update_lock); @@ -1468,20 +1469,22 @@ static ssize_t set_phy(struct device *dev, struct device_attribute *da, (unsigned char *)&wdata, IPMI_PHY_DATA_LEN(wdata.ipmi_tx_data[2]), NULL, 0); if (unlikely(status != 0)) { - goto exit; + goto exit_lock; } if (unlikely(data->ipmi.rx_result != 0)) { status = -EIO; - goto exit; + goto exit_lock; } status = count; -exit: +exit_lock: mutex_unlock(&data->update_lock); - return status; +exit_free: + kfree(command); + return status; } /*************************************************************************************