if (!kbuf || !ubuf || !klen)
return 0;
if (copy_from_user(&t, (struct cp210x_buffer __user *)ubuf, sizeof(t)))
return 0;
if (!kbuf || !ubuf || !klen)
return 0;
if (copy_from_user(&t, (struct cp210x_buffer __user *)ubuf, sizeof(t)))
return 0;
- if (t.len < klen)
- klen = t.len;
- str = kbuf + klen - t.len;
- if (copy_from_user(kbuf + klen - t.len, (u8 __user *)t.buf, klen))
+ slen = (klen - 2) / 2;
+ if (t.len < slen)
+ slen = t.len;
+ str = kbuf + klen - slen;
+ if (copy_from_user(str, (u8 __user *)t.buf, slen))
- return make_usb_string(kbuf, klen, str, t.len);
+ return make_usb_string(kbuf, klen, str, slen);
if (cp210x_get_partnum(port) == CP210x_PART_CP2103) {
u8 gpio = 0;
if (!cp210x_gpioget(port, &gpio) && !copy_to_user(
if (cp210x_get_partnum(port) == CP210x_PART_CP2103) {
u8 gpio = 0;
if (!cp210x_gpioget(port, &gpio) && !copy_to_user(
if (cp210x_get_partnum(port) == CP210x_PART_CP2103 &&
!cp210x_gpioset(port, arg))
return 0;
return -EFAULT;
break;
if (cp210x_get_partnum(port) == CP210x_PART_CP2103 &&
!cp210x_gpioset(port, arg))
return 0;
return -EFAULT;
break;
- !cp210x_gpiosetb(port, (cmd==IOCTL_GPIOBIC) ? 0 : arg,
- (cmd==IOCTL_GPIOBIC) ? arg : 0))
+ !cp210x_gpiosetb(port,
+ (cmd==CP210x_IOCTL_GPIOBIC) ? 0 : arg,
+ (cmd==CP210x_IOCTL_GPIOBIC) ? arg : 0))
{
struct cp210x_port_config config;
if (!cp210x_portconfget(port, &config) && !copy_to_user(
{
struct cp210x_port_config config;
if (!cp210x_portconfget(port, &config) && !copy_to_user(
{
struct cp210x_port_config config;
if (!copy_from_user(&config, (struct cp210x_port_config __user *)arg,
{
struct cp210x_port_config config;
if (!copy_from_user(&config, (struct cp210x_port_config __user *)arg,
if (cp210x_has_setmfg()) {
char usbstr[USBSTRLEN(CP210x_MAX_MFG_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,
if (cp210x_has_setmfg()) {
char usbstr[USBSTRLEN(CP210x_MAX_MFG_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,
{
char usbstr[USBSTRLEN(CP210x_MAX_PRODUCT_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,
{
char usbstr[USBSTRLEN(CP210x_MAX_PRODUCT_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,
{
char usbstr[USBSTRLEN(CP210x_MAX_SERIAL_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,
{
char usbstr[USBSTRLEN(CP210x_MAX_SERIAL_STRLEN)];
size_t len = cp210x_usbstr_from_user(usbstr, arg,