func: static int corsair_probe(struct hid_device *dev, const struct hid_device_id *id) int ret ; unsigned long quirks = id -> driver_data ; struct corsair_drvdata * drvdata ; struct usb_interface * usbif = to_usb_interface ( dev -> dev . parent ) ; drvdata = devm_kzalloc ( & dev -> dev , sizeof ( struct corsair_drvdata ) , GFP_KERNEL ); if ( drvdata == NULL )  ret = hid_parse ( dev ); if ( ret != 0 )  ret = hid_hw_start ( dev , HID_CONNECT_DEFAULT ); if ( ret != 0 )  if ( usbif -> cur_altsetting -> desc . bInterfaceNumber == 0 )  if ( quirks & CORSAIR_USE_K90_BACKLIGHT )  ret = k90_init_backlight ( dev ); static int k90_init_backlight(struct hid_device *dev) struct corsair_drvdata * drvdata = hid_get_drvdata ( dev ) ; size_t name_sz ; drvdata -> backlight = kzalloc ( sizeof ( struct k90_led ) , GFP_KERNEL ); if ( ! drvdata -> backlight )  name_sz = strlen ( dev_name ( & dev -> dev ) ) + sizeof ( K90_BACKLIGHT_LED_SUFFIX ); name = kzalloc ( name_sz , GFP_KERNEL ); if ( ! name )  snprintf ( name , name_sz , "%s" K90_BACKLIGHT_LED_SUFFIX dev_name ( & dev -> dev ) ) drvdata -> backlight -> cdev . name = name; drvdata -> backlight -> cdev . max_brightness = 3; drvdata -> backlight -> cdev . brightness_set = k90_brightness_set; drvdata -> backlight -> cdev . brightness_get = k90_backlight_get; INIT_WORK ( & drvdata -> backlight -> work , k90_backlight_work ); ret = led_classdev_register ( & dev -> dev , & drvdata -> backlight -> cdev ); if ( ret != 0 )  kfree ( drvdata -> backlight -> cdev . name ); return ret ; 