Fix battery issue with bluetooth keyboards (rhbz 903741)
This commit is contained in:
parent
ae3a062e88
commit
6fd38013c8
|
@ -0,0 +1,55 @@
|
|||
From d0a934b764c67b4bf626f5b7cf725a6e3066afd2 Mon Sep 17 00:00:00 2001
|
||||
From: David Herrmann <dh.herrmann@gmail.com>
|
||||
Date: Mon, 13 May 2013 15:01:30 +0000
|
||||
Subject: HID: input: return ENODATA if reading battery attrs fails
|
||||
|
||||
power_supply core has the bad habit of calling our battery callbacks
|
||||
from within power_supply_register(). Furthermore, if the callbacks
|
||||
fail with an unhandled error code, it will skip any uevent that it
|
||||
might currently process.
|
||||
So if HID-core registers battery devices, an "add" uevent is generated
|
||||
and the battery callbacks are called. These will gracefully fail due
|
||||
to timeouts as they might still hold locks on event processing. One
|
||||
could argue that this should be fixed in power_supply core, but the
|
||||
least we can do is to signal ENODATA so power_supply core will just
|
||||
skip the property and continue with the uevent.
|
||||
|
||||
This fixes a bug where "add" and "remove" uevents are skipped for
|
||||
battery devices. upower is unable to track these devices and currently
|
||||
needs to ignore them.
|
||||
|
||||
This patch also overwrites any other error code. I cannot see any reason
|
||||
why we should forward protocol- or I/O-errors to the power_supply core.
|
||||
We handle these errors in hid_ll_driver later, anyway, so just skip
|
||||
them. power_supply core cannot do anything useful with them, anyway,
|
||||
and we avoid skipping important uevents and confusing user-space.
|
||||
|
||||
Thanks a lot to Daniel Nicoletti for pushing and investigating
|
||||
on this.
|
||||
|
||||
Cc: Jiri Kosina <jkosina@suse.cz>
|
||||
Cc: Anton Vorontsov <cbou@mail.ru>
|
||||
Cc: David Woodhouse <dwmw2@infradead.org>
|
||||
Reported-by: Daniel Nicoletti <dantti12@gmail.com>
|
||||
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
|
||||
index 945b815..c526a3c 100644
|
||||
--- a/drivers/hid/hid-input.c
|
||||
+++ b/drivers/hid/hid-input.c
|
||||
@@ -354,10 +354,10 @@ static int hidinput_get_battery_property(struct power_supply *psy,
|
||||
dev->battery_report_type);
|
||||
|
||||
if (ret != 2) {
|
||||
- if (ret >= 0)
|
||||
- ret = -EINVAL;
|
||||
+ ret = -ENODATA;
|
||||
break;
|
||||
}
|
||||
+ ret = 0;
|
||||
|
||||
if (dev->battery_min < dev->battery_max &&
|
||||
buf[1] >= dev->battery_min &&
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -772,6 +772,9 @@ Patch25049: carl9170-fix-frame-drop-and-WARN-due-to-minstrel_ht-.patch
|
|||
Patch25050: iwlwifi-pcie-fix-race-in-queue-unmapping.patch
|
||||
Patch25051: iwlwifi-pcie-wake-the-queue-if-stopped-when-being-unmapped.patch
|
||||
|
||||
#rhbz 903741
|
||||
Patch25052: HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -1498,6 +1501,9 @@ ApplyPatch carl9170-fix-frame-drop-and-WARN-due-to-minstrel_ht-.patch
|
|||
ApplyPatch iwlwifi-pcie-fix-race-in-queue-unmapping.patch
|
||||
ApplyPatch iwlwifi-pcie-wake-the-queue-if-stopped-when-being-unmapped.patch
|
||||
|
||||
#rhbz 903741
|
||||
ApplyPatch HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
%endif
|
||||
|
@ -2349,6 +2355,9 @@ fi
|
|||
# '-' | |
|
||||
# '-'
|
||||
%changelog
|
||||
* Mon Jun 24 2013 Josh Boyer <jwboyer@redhat.com>
|
||||
- Fix battery issue with bluetooth keyboards (rhbz 903741)
|
||||
|
||||
* Fri Jun 21 2013 Josh Boyer <jwboyer@redhat.com> - 3.9.7-100
|
||||
- Add two patches to fix iwlwifi issues in unmapping
|
||||
- Add patch to fix carl9170 oops (rhbz 967271)
|
||||
|
|
Loading…
Reference in New Issue