Showing error 1650

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/usb/misc/sisusbvga/sisusb.c
Line in file: 3110
Project: Linux Kernel
Project version: 2.6.28
Confirmation: Fixed by a1645eefc8358d0a9dbeba254e51aa89de4d80a4
Tools: Smatch (1.59)
Entered: 2013-09-10 07:54:05 UTC


Source:

3080        .owner =        THIS_MODULE,
3081        .open =                sisusb_open,
3082        .release =        sisusb_release,
3083        .read =                sisusb_read,
3084        .write =        sisusb_write,
3085        .llseek =        sisusb_lseek,
3086#ifdef SISUSB_NEW_CONFIG_COMPAT
3087        .compat_ioctl = sisusb_compat_ioctl,
3088#endif
3089        .unlocked_ioctl = sisusb_ioctl
3090};
3091
3092static struct usb_class_driver usb_sisusb_class = {
3093        .name =                "sisusbvga%d",
3094        .fops =                &usb_sisusb_fops,
3095        .minor_base =        SISUSB_MINOR
3096};
3097
3098static int sisusb_probe(struct usb_interface *intf,
3099                        const struct usb_device_id *id)
3100{
3101        struct usb_device *dev = interface_to_usbdev(intf);
3102        struct sisusb_usb_data *sisusb;
3103        int retval = 0, i;
3104
3105        dev_info(&dev->dev, "USB2VGA dongle found at address %d\n",
3106                dev->devnum);
3107
3108        /* Allocate memory for our private */
3109        if (!(sisusb = kzalloc(sizeof(*sisusb), GFP_KERNEL))) {
3110                dev_err(&sisusb->sisusb_dev->dev, "Failed to allocate memory for private data\n");
3111                return -ENOMEM;
3112        }
3113        kref_init(&sisusb->kref);
3114
3115        mutex_init(&(sisusb->lock));
3116
3117        /* Register device */
3118        if ((retval = usb_register_dev(intf, &usb_sisusb_class))) {
3119                dev_err(&sisusb->sisusb_dev->dev, "Failed to get a minor for device %d\n",
3120                        dev->devnum);
Show full sources