X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=drivers%2Fhid%2Fhid-core.c;h=3942ee61bd1c17e57867a7d8e5f521b5f8eae9b8;hb=293bccc5b202400a6e47bd42e852d50d7d991b4e;hp=f858cc72011d183fa11892fb152e0d9b705c3059;hpb=47fbf82b5a4f5e115d8baf5e40a5c82f30f89d67;p=linux-2.6-microblaze.git diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index f858cc72011d..3942ee61bd1c 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1952,6 +1952,8 @@ static int hid_device_probe(struct device *dev) } hdev->io_started = false; + clear_bit(ffs(HID_STAT_REPROBED), &hdev->status); + if (!hdev->driver) { id = hid_match_device(hdev, hdrv); if (id == NULL) { @@ -2215,7 +2217,8 @@ static int __hid_bus_reprobe_drivers(struct device *dev, void *data) struct hid_device *hdev = to_hid_device(dev); if (hdev->driver == hdrv && - !hdrv->match(hdev, hid_ignore_special_drivers)) + !hdrv->match(hdev, hid_ignore_special_drivers) && + !test_and_set_bit(ffs(HID_STAT_REPROBED), &hdev->status)) return device_reprobe(dev); return 0;