Re: CCID handling of multiple devices

Ludovic Rousseau <[email protected]>
Newsgroups gmane.comp.lib.muscle
Message-ID <CAGstE8CexhWYrTt23HTPp9BAGAiK9TN8xBra_G2+=ijJBbS0sw@mail.gmail.com>
2016-04-20 18:57 GMT+02:00 Maksim Ivanov <[email protected]>:

> Hello,
>

Hello,


>
> Looking at the CCID source code, it seems that there may be some
> problems with working with multiple readers simultaneously.
>
> The CCID reader polling code (or, to be precise, its libusb-based
> version) is based on the libusb_handle_events function:
>
> https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=pcsclite/CCID.git;a=blob;f=src/ccid_usb.c;h=6a097eadb821ebed39eefac6c4b39b3f8f135001#l1252
>
> The problem with this function is that, as it's documented in libusb
> docs, it's prone to race conditions:
> http://libusb.sourceforge.net/api-1.0/mtasync.html#Using
>
> Seems that the races are pretty likely to occur when there are two or
> more readers operated simultaneously. For each of them, a thread with
> a polling transfer is created by the CCID driver; each thread is
> blocked on libusb_handle_events most of its time. The first type of
> race may happen between checking the "completed" variable and calling
> the libusb_handle_events function: another thread with the running
> libusb_handle_events function may finish this transfer during this
> period of time. The second type of race roots from the fact that there
> is no guarantee which thread's libusb_handle_event will catch the
> events, so it may be that one polling thread misses the transfer
> completion it's waiting for.
>
> Even though the races, when they occur, result in just 60 seconds
> delay, it would be great if they would be omitted completely.
> The fix shouldn't be difficult, based on the handy function
> libusb_handle_events_completed, which appears to be solving exactly
> this problem:
>
> http://libusb.sourceforge.net/api-1.0/group__poll.html#ga0bc99f39e4cf5ad393cd5936c36037d1
>


Fixed in
https://github.com/LudovicRousseau/CCID/commit/2c8ffab9962484653b6445a6c85a6c690a5948b3

Thanks

-- 
 Dr. Ludovic Rousseau

_______________________________________________
Pcsclite-muscle mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pcsclite-muscle
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.