Fix battery issue with bluetooth keyboards (rhbz 903741)
This commit is contained in:
parent
d258655694
commit
0a517e3c24
@ -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
|
11
kernel.spec
11
kernel.spec
@ -62,7 +62,7 @@ Summary: The Linux kernel
|
|||||||
# For non-released -rc kernels, this will be appended after the rcX and
|
# For non-released -rc kernels, this will be appended after the rcX and
|
||||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||||
#
|
#
|
||||||
%global baserelease 1
|
%global baserelease 2
|
||||||
%global fedora_build %{baserelease}
|
%global fedora_build %{baserelease}
|
||||||
|
|
||||||
# base_sublevel is the kernel version we're starting with and patching
|
# base_sublevel is the kernel version we're starting with and patching
|
||||||
@ -778,6 +778,9 @@ Patch25046: KVM-x86-handle-idiv-overflow-at-kvm_write_tsc.patch
|
|||||||
|
|
||||||
Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||||
|
|
||||||
|
#rhbz 903741
|
||||||
|
Patch25052: HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||||
|
|
||||||
# END OF PATCH DEFINITIONS
|
# END OF PATCH DEFINITIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -1484,6 +1487,9 @@ ApplyPatch KVM-x86-handle-idiv-overflow-at-kvm_write_tsc.patch
|
|||||||
|
|
||||||
ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||||
|
|
||||||
|
#rhbz 903741
|
||||||
|
ApplyPatch HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||||
|
|
||||||
# END OF PATCH APPLICATIONS
|
# END OF PATCH APPLICATIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -2280,6 +2286,9 @@ fi
|
|||||||
# ||----w |
|
# ||----w |
|
||||||
# || ||
|
# || ||
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jun 24 2013 Josh Boyer <jwboyer@redhat.com>
|
||||||
|
- Fix battery issue with bluetooth keyboards (rhbz 903741)
|
||||||
|
|
||||||
* Mon Jun 24 2013 Josh Boyer <jwboyer@redhat.com> - 3.10.0-0.rc7.git0.1
|
* Mon Jun 24 2013 Josh Boyer <jwboyer@redhat.com> - 3.10.0-0.rc7.git0.1
|
||||||
- Linux v3.10-rc7
|
- Linux v3.10-rc7
|
||||||
- Disable debugging options.
|
- Disable debugging options.
|
||||||
|
Loading…
Reference in New Issue
Block a user