From: Zefan Li <lizf@kernel.org>
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
Benjamin Tissoires <benjamin.tissoires@redhat.com>,
Jiri Kosina <jkosina@suse.cz>, Zefan Li <lizefan@huawei.com>
Subject: [PATCH 3.4 26/45] HID: logitech-dj: prevent false errors to be shown
Date: Tue, 23 Sep 2014 10:31:28 +0800 [thread overview]
Message-ID: <1411439507-30391-26-git-send-email-lizf@kernel.org> (raw)
In-Reply-To: <1411439259-30224-1-git-send-email-lizf@kernel.org>
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
3.4.104-rc1 review patch. If anyone has any objections, please let me know.
------------------
commit 5abfe85c1d4694d5d4bbd13ecc166262b937adf0 upstream.
Commit "HID: logitech: perform bounds checking on device_id early
enough" unfortunately leaks some errors to dmesg which are not real
ones:
- if the report is not a DJ one, then there is not point in checking
the device_id
- the receiver (index 0) can also receive some notifications which
can be safely ignored given the current implementation
Move out the test regarding the report_id and also discards
printing errors when the receiver got notified.
Fixes: ad3e14d7c5268c2e24477c6ef54bbdf88add5d36
Reported-and-tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Zefan Li <lizefan@huawei.com>
---
drivers/hid/hid-logitech-dj.c | 43 ++++++++++++++++++++++++-----------------
drivers/hid/hid-logitech-dj.h | 1 +
2 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
index bdf9f53..f009ab2 100644
--- a/drivers/hid/hid-logitech-dj.c
+++ b/drivers/hid/hid-logitech-dj.c
@@ -681,7 +681,6 @@ static int logi_dj_raw_event(struct hid_device *hdev,
struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
struct dj_report *dj_report = (struct dj_report *) data;
unsigned long flags;
- bool report_processed = false;
dbg_hid("%s, size:%d\n", __func__, size);
@@ -708,34 +707,42 @@ static int logi_dj_raw_event(struct hid_device *hdev,
* device (via hid_input_report() ) and return 1 so hid-core does not do
* anything else with it.
*/
+
+ /* case 1) */
+ if (data[0] != REPORT_ID_DJ_SHORT)
+ return false;
+
if ((dj_report->device_index < DJ_DEVICE_INDEX_MIN) ||
(dj_report->device_index > DJ_DEVICE_INDEX_MAX)) {
- dev_err(&hdev->dev, "%s: invalid device index:%d\n",
+ /*
+ * Device index is wrong, bail out.
+ * This driver can ignore safely the receiver notifications,
+ * so ignore those reports too.
+ */
+ if (dj_report->device_index != DJ_RECEIVER_INDEX)
+ dev_err(&hdev->dev, "%s: invalid device index:%d\n",
__func__, dj_report->device_index);
return false;
}
spin_lock_irqsave(&djrcv_dev->lock, flags);
- if (dj_report->report_id == REPORT_ID_DJ_SHORT) {
- switch (dj_report->report_type) {
- case REPORT_TYPE_NOTIF_DEVICE_PAIRED:
- case REPORT_TYPE_NOTIF_DEVICE_UNPAIRED:
- logi_dj_recv_queue_notification(djrcv_dev, dj_report);
- break;
- case REPORT_TYPE_NOTIF_CONNECTION_STATUS:
- if (dj_report->report_params[CONNECTION_STATUS_PARAM_STATUS] ==
- STATUS_LINKLOSS) {
- logi_dj_recv_forward_null_report(djrcv_dev, dj_report);
- }
- break;
- default:
- logi_dj_recv_forward_report(djrcv_dev, dj_report);
+ switch (dj_report->report_type) {
+ case REPORT_TYPE_NOTIF_DEVICE_PAIRED:
+ case REPORT_TYPE_NOTIF_DEVICE_UNPAIRED:
+ logi_dj_recv_queue_notification(djrcv_dev, dj_report);
+ break;
+ case REPORT_TYPE_NOTIF_CONNECTION_STATUS:
+ if (dj_report->report_params[CONNECTION_STATUS_PARAM_STATUS] ==
+ STATUS_LINKLOSS) {
+ logi_dj_recv_forward_null_report(djrcv_dev, dj_report);
}
- report_processed = true;
+ break;
+ default:
+ logi_dj_recv_forward_report(djrcv_dev, dj_report);
}
spin_unlock_irqrestore(&djrcv_dev->lock, flags);
- return report_processed;
+ return true;
}
static int logi_dj_probe(struct hid_device *hdev,
diff --git a/drivers/hid/hid-logitech-dj.h b/drivers/hid/hid-logitech-dj.h
index 4a40003..daeb0aa 100644
--- a/drivers/hid/hid-logitech-dj.h
+++ b/drivers/hid/hid-logitech-dj.h
@@ -27,6 +27,7 @@
#define DJ_MAX_PAIRED_DEVICES 6
#define DJ_MAX_NUMBER_NOTIFICATIONS 8
+#define DJ_RECEIVER_INDEX 0
#define DJ_DEVICE_INDEX_MIN 1
#define DJ_DEVICE_INDEX_MAX 6
--
1.7.9.5
next prev parent reply other threads:[~2014-09-23 2:39 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-23 2:27 [PATCH 3.4 00/45] 3.4.104-rc1 review Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 01/45] stable_kernel_rules: Add pointer to netdev-FAQ for network patches Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 02/45] ASoC: pxa-ssp: drop SNDRV_PCM_FMTBIT_S24_LE Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 03/45] ibmveth: Fix endian issues with rx_no_buffer statistic Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 04/45] HID: fix a couple of off-by-ones Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 05/45] HID: logitech: perform bounds checking on device_id early enough Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 06/45] isofs: Fix unbounded recursion when processing relocated directories Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 07/45] MIPS: OCTEON: make get_system_type() thread-safe Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 08/45] kvm: iommu: fix the third parameter of kvm_iommu_put_pages (CVE-2014-3601) Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 09/45] pata_scc: propagate return value of scc_wait_after_reset Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 10/45] iommu/amd: Fix cleanup_domain for mass device removal Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 11/45] md/raid6: avoid data corruption during recovery of double-degraded RAID6 Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 12/45] CIFS: Fix wrong directory attributes after rename Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 13/45] ALSA: hda/realtek - Avoid setting wrong COEF on ALC269 & co Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 14/45] xtensa: replace IOCTL code definitions with constants Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 15/45] xtensa: fix address checks in dma_{alloc,free}_coherent Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 16/45] xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 17/45] xtensa: fix a6 and a7 handling in fast_syscall_xtensa Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 18/45] staging: et131x: Fix errors caused by phydev->addr accesses before initialisation Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 19/45] USB: option: add VIA Telecom CDS7 chipset device id Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 20/45] USB: ftdi_sio: add Basic Micro ATOM Nano USB2Serial PID Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 21/45] USB: serial: pl2303: add device id for ztek device Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 22/45] USB: ftdi_sio: Added PID for new ekey device Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 23/45] xhci: Treat not finding the event_seg on COMP_STOP the same as COMP_STOP_INVAL Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 24/45] usb: xhci: amd chipset also needs short TX quirk Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 25/45] USB: whiteheat: Added bounds checking for bulk command response Zefan Li
2014-09-23 2:31 ` Zefan Li [this message]
2014-09-23 2:31 ` [PATCH 3.4 27/45] USB: sisusb: add device id for Magic Control USB video Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 28/45] NFSv4: Fix problems with close in the presence of a delegation Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 29/45] HID: magicmouse: sanity check report size in raw_event() callback Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 30/45] HID: picolcd: " Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 31/45] ARM: 8128/1: abort: don't clear the exclusive monitors Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 32/45] ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy strex Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 33/45] USB: serial: fix potential stack buffer overflow Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 34/45] USB: serial: fix potential heap " Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 35/45] MIPS: perf: Fix build error caused by unused counters_per_cpu_to_total() Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 36/45] MIPS: Fix accessing to per-cpu data when flushing the cache Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 37/45] openrisc: add missing header inclusion Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 38/45] slab/mempolicy: always use local policy from interrupt context Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 39/45] 8250_pci: fix warnings in backport of Broadcom TruManage support Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 40/45] unicore32: select generic atomic64_t support Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 41/45] UniCore32-bugfix: Remove definitions in asm/bug.h to solve difference between native and cross compiler Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 42/45] UniCore32-bugfix: fix mismatch return value of __xchg_bad_pointer Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 43/45] alpha: Fix fall-out from disintegrating asm/system.h Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 44/45] ext2: Fix fs corruption in ext2_get_xip_mem() Zefan Li
2014-09-23 2:31 ` [PATCH 3.4 45/45] alpha: add io{read,write}{16,32}be functions Zefan Li
2014-09-23 2:42 ` [PATCH 3.4 00/45] 3.4.104-rc1 review Guenter Roeck
2014-09-23 2:54 ` Guenter Roeck
2014-09-23 2:54 ` Zefan Li
2014-09-23 2:56 ` Zefan Li
2014-09-23 4:54 ` Satoru Takeuchi
2014-09-23 6:12 ` Zefan Li
2014-09-23 4:58 ` Guenter Roeck
2014-09-23 6:14 ` Zefan Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1411439507-30391-26-git-send-email-lizf@kernel.org \
--to=lizf@kernel.org \
--cc=benjamin.tissoires@redhat.com \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome