Цитата Сообщение от yterlyga Посмотреть сообщение
Привет!
Не подскажитете как лечится следующая ошибка на 5.х ядрах?

Спасибо!
В функции static int ioc_register

везде где
__put_user(

меняете на
put_user(

по сути убираете два ведущих подчеркивания

вот полный текст исправленной функции
Код:
static int ioc_register(struct file *file, struct usb_vhci_ioc_register __user *arg)
{
        const char *dname;
        int retval, i, usbbusnum;
        struct usb_vhci_device *vdev;
        u8 pc;

        vhci_dbg("cmd=USB_VHCI_HCD_IOCREGISTER\n");

        if(unlikely(file->private_data))
        {
                vhci_printk(KERN_ERR, "file->private_data != NULL (USB_VHCI_HCD_IOCREGISTER already done?)\n");
                return -EPROTO;
        }

        __get_user(pc, &arg->port_count);
        retval = usb_vhci_hcd_register(&vhci_ioc_ifc, file, pc, &vdev);
        if(unlikely(retval < 0)) return retval;
        file->private_data = vdev;

        // copy id to user space
        put_user(usb_vhci_dev_id(vdev), &arg->id);

        // copy bus-id to user space
        dname = usb_vhci_dev_name(vdev);
        i = strlen(dname);
        i = (i < sizeof(arg->bus_id)) ? i : sizeof(arg->bus_id) - 1;
        if(copy_to_user(arg->bus_id, dname, i))
        {
                vhci_printk(KERN_WARNING, "Failed to copy bus_id to userspace.\n");
                put_user('\0', arg->bus_id);
        }
        // make sure the last character is null
        put_user('\0', arg->bus_id + i);

        usbbusnum = usb_vhci_dev_busnum(vdev);
        vhci_printk(KERN_INFO, "Usb bus #%d\n", usbbusnum);
        put_user(usbbusnum, &arg->usb_busnum);

        return 0;
}