|
@@ -25,6 +25,7 @@
|
|
|
#include <linux/interrupt.h>
|
|
|
#include <linux/aer.h>
|
|
|
#include <linux/gfp.h>
|
|
|
+#include <linux/kernel.h>
|
|
|
|
|
|
#include <scsi/scsi.h>
|
|
|
#include <scsi/scsi_device.h>
|
|
@@ -1795,12 +1796,11 @@ lpfc_soft_wwpn_store(struct device *dev, struct device_attribute *attr,
|
|
|
|
|
|
/* Validate and store the new name */
|
|
|
for (i=0, j=0; i < 16; i++) {
|
|
|
- if ((*buf >= 'a') && (*buf <= 'f'))
|
|
|
- j = ((j << 4) | ((*buf++ -'a') + 10));
|
|
|
- else if ((*buf >= 'A') && (*buf <= 'F'))
|
|
|
- j = ((j << 4) | ((*buf++ -'A') + 10));
|
|
|
- else if ((*buf >= '0') && (*buf <= '9'))
|
|
|
- j = ((j << 4) | (*buf++ -'0'));
|
|
|
+ int value;
|
|
|
+
|
|
|
+ value = hex_to_bin(*buf++);
|
|
|
+ if (value >= 0)
|
|
|
+ j = (j << 4) | value;
|
|
|
else
|
|
|
return -EINVAL;
|
|
|
if (i % 2) {
|
|
@@ -1888,12 +1888,11 @@ lpfc_soft_wwnn_store(struct device *dev, struct device_attribute *attr,
|
|
|
|
|
|
/* Validate and store the new name */
|
|
|
for (i=0, j=0; i < 16; i++) {
|
|
|
- if ((*buf >= 'a') && (*buf <= 'f'))
|
|
|
- j = ((j << 4) | ((*buf++ -'a') + 10));
|
|
|
- else if ((*buf >= 'A') && (*buf <= 'F'))
|
|
|
- j = ((j << 4) | ((*buf++ -'A') + 10));
|
|
|
- else if ((*buf >= '0') && (*buf <= '9'))
|
|
|
- j = ((j << 4) | (*buf++ -'0'));
|
|
|
+ int value;
|
|
|
+
|
|
|
+ value = hex_to_bin(*buf++);
|
|
|
+ if (value >= 0)
|
|
|
+ j = (j << 4) | value;
|
|
|
else
|
|
|
return -EINVAL;
|
|
|
if (i % 2) {
|