@@ -80,15 +80,16 @@ struct pegasus {
8080 struct work_struct init ;
8181};
8282
83- static void pegasus_control_msg (struct pegasus * pegasus , u8 * data , int len )
83+ static int pegasus_control_msg (struct pegasus * pegasus , u8 * data , int len )
8484{
8585 const int sizeof_buf = len + 2 ;
8686 int result ;
87+ int error ;
8788 u8 * cmd_buf ;
8889
8990 cmd_buf = kmalloc (sizeof_buf , GFP_KERNEL );
9091 if (!cmd_buf )
91- return ;
92+ return - ENOMEM ;
9293
9394 cmd_buf [0 ] = NOTETAKER_REPORT_ID ;
9495 cmd_buf [1 ] = len ;
@@ -101,17 +102,23 @@ static void pegasus_control_msg(struct pegasus *pegasus, u8 *data, int len)
101102 0 , 0 , cmd_buf , sizeof_buf ,
102103 USB_CTRL_SET_TIMEOUT );
103104
104- if (result != sizeof_buf )
105- dev_err (& pegasus -> usbdev -> dev , "control msg error\n" );
106-
107105 kfree (cmd_buf );
106+
107+ if (unlikely (result != sizeof_buf )) {
108+ error = result < 0 ? result : - EIO ;
109+ dev_err (& pegasus -> usbdev -> dev , "control msg error: %d\n" ,
110+ error );
111+ return error ;
112+ }
113+
114+ return 0 ;
108115}
109116
110- static void pegasus_set_mode (struct pegasus * pegasus , u8 mode , u8 led )
117+ static int pegasus_set_mode (struct pegasus * pegasus , u8 mode , u8 led )
111118{
112119 u8 cmd [] = { NOTETAKER_SET_CMD , NOTETAKER_SET_MODE , led , mode };
113120
114- pegasus_control_msg (pegasus , cmd , sizeof (cmd ));
121+ return pegasus_control_msg (pegasus , cmd , sizeof (cmd ));
115122}
116123
117124static void pegasus_parse_packet (struct pegasus * pegasus )
@@ -191,8 +198,12 @@ static void pegasus_irq(struct urb *urb)
191198static void pegasus_init (struct work_struct * work )
192199{
193200 struct pegasus * pegasus = container_of (work , struct pegasus , init );
201+ int error ;
194202
195- pegasus_set_mode (pegasus , PEN_MODE_XY , NOTETAKER_LED_MOUSE );
203+ error = pegasus_set_mode (pegasus , PEN_MODE_XY , NOTETAKER_LED_MOUSE );
204+ if (error )
205+ dev_err (& pegasus -> usbdev -> dev , "pegasus_set_mode error: %d\n" ,
206+ error );
196207}
197208
198209static int pegasus_open (struct input_dev * dev )
@@ -208,7 +219,7 @@ static int pegasus_open(struct input_dev *dev)
208219 if (usb_submit_urb (pegasus -> irq , GFP_KERNEL ))
209220 retval = - EIO ;
210221
211- pegasus_set_mode (pegasus , PEN_MODE_XY , NOTETAKER_LED_MOUSE );
222+ retval = pegasus_set_mode (pegasus , PEN_MODE_XY , NOTETAKER_LED_MOUSE );
212223
213224 usb_autopm_put_interface (pegasus -> intf );
214225
0 commit comments