static ssize_t match_busid_store(struct device_driver *dev, const char *buf, size_t count) { int len; char busid[BUSID_SIZE]; if (count < 5) return -EINVAL; /* busid needs to include \0 termination */ len = strlcpy(busid, buf + 4, BUSID_SIZE); if (sizeof(busid) <= len) return -EINVAL; if (!strncmp(buf, "add ", 4)) { if (add_match_busid(busid) < 0) return -ENOMEM; pr_debug("add busid %s\n", busid); return count; } if (!strncmp(buf, "del ", 4)) { if (del_match_busid(busid) < 0) return -ENODEV; pr_debug("del busid %s\n", busid); return count; } return -EINVAL; }
static ssize_t store_match_busid(struct device_driver *dev, const char *buf, size_t count) { int len; char busid[BUSID_SIZE]; if (count < 5) return -EINVAL; /* strnlen() does not include \0 */ len = strnlen(buf + 4, BUSID_SIZE); /* busid needs to include \0 termination */ if (!(len < BUSID_SIZE)) return -EINVAL; strncpy(busid, buf + 4, BUSID_SIZE); if (!strncmp(buf, "add ", 4)) { if (add_match_busid(busid) < 0) return -ENOMEM; else { usbip_udbg("add busid %s\n", busid); return count; } } else if (!strncmp(buf, "del ", 4)) { if (del_match_busid(busid) < 0) return -ENODEV; else { usbip_udbg("del busid %s\n", busid); return count; } } else return -EINVAL; }
static ssize_t store_match_busid(struct device_driver *dev, const char *buf, size_t count) { int len; char busid[BUSID_SIZE]; if (count < 5) return -EINVAL; len = strnlen(buf + 4, BUSID_SIZE); if (!(len < BUSID_SIZE)) return -EINVAL; strncpy(busid, buf + 4, BUSID_SIZE); if (!strncmp(buf, "add ", 4)) { if (add_match_busid(busid) < 0) { return -ENOMEM; } else { pr_debug("add busid %s\n", busid); return count; } } else if (!strncmp(buf, "del ", 4)) { if (del_match_busid(busid) < 0) { return -ENODEV; } else { pr_debug("del busid %s\n", busid); return count; } } else { return -EINVAL; } }