|
@@ -270,6 +270,7 @@ static ssize_t cxacru_sysfs_showattr_dB(s16 value, char *buf)
|
|
|
static ssize_t cxacru_sysfs_showattr_bool(u32 value, char *buf)
|
|
|
{
|
|
|
static char *str[] = { "no", "yes" };
|
|
|
+
|
|
|
if (unlikely(value >= ARRAY_SIZE(str)))
|
|
|
return snprintf(buf, PAGE_SIZE, "%u\n", value);
|
|
|
return snprintf(buf, PAGE_SIZE, "%s\n", str[value]);
|
|
@@ -278,6 +279,7 @@ static ssize_t cxacru_sysfs_showattr_bool(u32 value, char *buf)
|
|
|
static ssize_t cxacru_sysfs_showattr_LINK(u32 value, char *buf)
|
|
|
{
|
|
|
static char *str[] = { NULL, "not connected", "connected", "lost" };
|
|
|
+
|
|
|
if (unlikely(value >= ARRAY_SIZE(str) || str[value] == NULL))
|
|
|
return snprintf(buf, PAGE_SIZE, "%u\n", value);
|
|
|
return snprintf(buf, PAGE_SIZE, "%s\n", str[value]);
|
|
@@ -702,6 +704,7 @@ static int cxacru_cm_get_array(struct cxacru_data *instance, enum cxacru_cm_requ
|
|
|
len = ret / 4;
|
|
|
for (offb = 0; offb < len; ) {
|
|
|
int l = le32_to_cpu(buf[offb++]);
|
|
|
+
|
|
|
if (l < 0 || l > stride || l > (len - offb) / 2) {
|
|
|
if (printk_ratelimit())
|
|
|
usb_err(instance->usbatm, "invalid data length from cm %#x: %d\n",
|
|
@@ -732,6 +735,7 @@ cleanup:
|
|
|
static int cxacru_card_status(struct cxacru_data *instance)
|
|
|
{
|
|
|
int ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_STATUS, NULL, 0, NULL, 0);
|
|
|
+
|
|
|
if (ret < 0) { /* firmware not loaded */
|
|
|
usb_dbg(instance->usbatm, "cxacru_adsl_start: CARD_GET_STATUS returned %d\n", ret);
|
|
|
return ret;
|
|
@@ -945,6 +949,7 @@ static int cxacru_fw(struct usb_device *usb_dev, enum cxacru_fw_request fw,
|
|
|
offb = offd = 0;
|
|
|
do {
|
|
|
int l = min_t(int, stride, size - offd);
|
|
|
+
|
|
|
buf[offb++] = fw;
|
|
|
buf[offb++] = l;
|
|
|
buf[offb++] = code1;
|
|
@@ -1091,8 +1096,8 @@ static int cxacru_heavy_init(struct usbatm_data *usbatm_instance,
|
|
|
{
|
|
|
const struct firmware *fw, *bp;
|
|
|
struct cxacru_data *instance = usbatm_instance->driver_data;
|
|
|
-
|
|
|
int ret = cxacru_find_firmware(instance, "fw", &fw);
|
|
|
+
|
|
|
if (ret) {
|
|
|
usb_warn(usbatm_instance, "firmware (cxacru-fw.bin) unavailable (system misconfigured?)\n");
|
|
|
return ret;
|