Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c1d7b34 authored by Bo Huang's avatar Bo Huang
Browse files

libusbhost: Fix issue of multiple inotify event at same time.



libusbhost can handle multiple inotify events at same time on Kit kat.
In original implementation, the function-level ret is assigned with
length of read and used for while loop.
if want to add a new watch for subdirectory,inotify_add_watch will
update the function-level ret with watch descriptor.
It impact on while loop to do exit.

Add local result to avoid it.

Change-Id: I101041ccfd54eaac14969a45e90ab2e49bdff578
Signed-off-by: default avatarBo Huang <bo.b.huang@intel.com>
parent 0607e104
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -263,11 +263,12 @@ int usb_host_read_event(struct usb_host_context *context)
                D("%s subdirectory %s: index: %d\n", (event->mask & IN_CREATE) ?
                        "new" : "gone", path, i);
                if (i > 0 && i < MAX_USBFS_WD_COUNT) {
                    int local_ret = 0;
                    if (event->mask & IN_CREATE) {
                        ret = inotify_add_watch(context->fd, path,
                        local_ret = inotify_add_watch(context->fd, path,
                                IN_CREATE | IN_DELETE);
                        if (ret >= 0)
                            context->wds[i] = ret;
                        if (local_ret >= 0)
                            context->wds[i] = local_ret;
                        done = find_existing_devices_bus(path, context->cb_added,
                                context->data);
                    } else if (event->mask & IN_DELETE) {