Hi Daniel,
I had a question about patch 5d8926658ce4: "usbtouchscreen: version 0.4"
from Jul 31, 2006.
drivers/input/touchscreen/usbtouchscreen.c
1326 static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
1327 unsigned char *pkt, int len)
1328 {
1329 unsigned char *buffer;
1330 int pkt_len, pos, buf_len, tmp;
1331
1332 /* process buffer */
1333 if (unlikely(usbtouch->buf_len)) {
1334 /* try to get size */
1335 pkt_len = usbtouch->type->get_pkt_len(
1336 usbtouch->buffer, usbtouch->buf_len);
->get_pkt_len() returns -1 on error.
1337
1338 /* drop? */
1339 if (unlikely(!pkt_len))
1340 goto out_flush_buf;
1341
1342 /* need to append -pkt_len bytes before able to get
size */
1343 if (unlikely(pkt_len < 0)) {
1344 int append = -pkt_len;
But then we treat the -1 as a length of 1. Is that really what we
intended?
1345 if (unlikely(append > len))
1346 append = len;
1347 if (usbtouch->buf_len + append >=
usbtouch->type->rept_size)
1348 goto out_flush_buf;
1349 memcpy(usbtouch->buffer + usbtouch->buf_len,
pkt, append);
1350 usbtouch->buf_len += append;
1351
1352 pkt_len = usbtouch->type->get_pkt_len(
1353 usbtouch->buffer,
usbtouch->buf_len);
1354 if (pkt_len < 0)
1355 return;
1356 }
1357
1358 /* append */
1359 tmp = pkt_len - usbtouch->buf_len;
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html