- struct hid_ff_pid *private;
- struct hid_input *hidinput = list_entry(&hid->inputs, struct hid_input, list);
-
- private = hid->ff_private = kmalloc(sizeof(struct hid_ff_pid), GFP_KERNEL);
- if (!private) return -1;
-
- memset(private,0,sizeof(struct hid_ff_pid));
-
- hid->ff_private = private; /* 'cause memset can move the block away */
-
- private->hid = hid;
-
- hid->ff_exit = hid_pid_exit;
- hid->ff_event = hid_pid_event;
-
- /* Open output URB */
- if (!(private->urbffout = usb_alloc_urb(0, GFP_KERNEL))) {
- kfree(private);
- return -1;
- }
-
- usb_fill_control_urb(private->urbffout, hid->dev,0,(void *) &private->ffcr,private->ctrl_buffer,8,hid_pid_ctrl_out,hid);
- hidinput->input.upload_effect = hid_pid_upload_effect;
- hidinput->input.flush = hid_pid_flush;
- hidinput->input.ff_effects_max = 8; // A random default
- set_bit(EV_FF, hidinput->input.evbit);
- set_bit(EV_FF_STATUS, hidinput->input.evbit);
-
- spin_lock_init(&private->lock);
-
- printk(KERN_INFO "Force feedback driver for PID devices by Rodrigo Damazio <rdamazio@lsi.usp.br>.\n");
-
- return 0;
+ struct hid_ff_pid *private;
+ struct hid_input *hidinput = list_entry(&hid->inputs, struct hid_input, list);
+
+ private = hid->ff_private = kcalloc(1, sizeof(struct hid_ff_pid), GFP_KERNEL);
+ if (!private)
+ return -ENOMEM;
+
+ private->hid = hid;
+
+ hid->ff_exit = hid_pid_exit;
+ hid->ff_event = hid_pid_event;
+
+ /* Open output URB */
+ if (!(private->urbffout = usb_alloc_urb(0, GFP_KERNEL))) {
+ kfree(private);
+ return -1;
+ }
+
+ usb_fill_control_urb(private->urbffout, hid->dev, 0,
+ (void *)&private->ffcr, private->ctrl_buffer, 8,
+ hid_pid_ctrl_out, hid);
+ hidinput->input.upload_effect = hid_pid_upload_effect;
+ hidinput->input.flush = hid_pid_flush;
+ hidinput->input.ff_effects_max = 8; // A random default
+ set_bit(EV_FF, hidinput->input.evbit);
+ set_bit(EV_FF_STATUS, hidinput->input.evbit);
+
+ spin_lock_init(&private->lock);
+
+ printk(KERN_INFO "Force feedback driver for PID devices by Rodrigo Damazio <rdamazio@lsi.usp.br>.\n");
+
+ return 0;