Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: trackpoint - handle sysfs errors

Also use kzalloc instead of kcalloc since we are allocating single object.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

authored by

Jeff Garzik and committed by
Dmitry Torokhov
8ff22ea7 8dd51650

+10 -2
+10 -2
drivers/input/mouse/trackpoint.c
··· 293 293 struct ps2dev *ps2dev = &psmouse->ps2dev; 294 294 unsigned char firmware_id; 295 295 unsigned char button_info; 296 + int error; 296 297 297 298 if (trackpoint_start_protocol(psmouse, &firmware_id)) 298 299 return -1; ··· 306 305 button_info = 0; 307 306 } 308 307 309 - psmouse->private = priv = kcalloc(1, sizeof(struct trackpoint_data), GFP_KERNEL); 308 + psmouse->private = priv = kzalloc(sizeof(struct trackpoint_data), GFP_KERNEL); 310 309 if (!priv) 311 310 return -1; 312 311 ··· 319 318 trackpoint_defaults(priv); 320 319 trackpoint_sync(psmouse); 321 320 322 - sysfs_create_group(&ps2dev->serio->dev.kobj, &trackpoint_attr_group); 321 + error = sysfs_create_group(&ps2dev->serio->dev.kobj, &trackpoint_attr_group); 322 + if (error) { 323 + printk(KERN_ERR 324 + "trackpoint.c: failed to create sysfs attributes, error: %d\n", 325 + error); 326 + kfree(priv); 327 + return -1; 328 + } 323 329 324 330 printk(KERN_INFO "IBM TrackPoint firmware: 0x%02x, buttons: %d/%d\n", 325 331 firmware_id, (button_info & 0xf0) >> 4, button_info & 0x0f);