* [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
@ 2022-11-22 13:48 Jiasheng Jiang
2022-12-20 14:51 ` Jiri Kosina
2022-12-20 17:08 ` srinivas pandruvada
0 siblings, 2 replies; 5+ messages in thread
From: Jiasheng Jiang @ 2022-11-22 13:48 UTC (permalink / raw)
To: srinivas.pandruvada, jikos, benjamin.tissoires
Cc: linux-input, linux-kernel, Jiasheng Jiang
As the kcalloc may return NULL pointer,
it should be better to check the ishtp_dma_tx_map
before use in order to avoid NULL pointer dereference.
Fixes: 3703f53b99e4 ("HID: intel_ish-hid: ISH Transport layer")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
---
drivers/hid/intel-ish-hid/ishtp/dma-if.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/hid/intel-ish-hid/ishtp/dma-if.c b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
index 40554c8daca0..00046cbfd4ed 100644
--- a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
+++ b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
@@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,
int required_slots = (size / DMA_SLOT_SIZE)
+ 1 * (size % DMA_SLOT_SIZE != 0);
+ if (!dev->ishtp_dma_tx_map) {
+ dev_err(dev->devc, "Fail to allocate Tx map\n");
+ return NULL;
+ }
+
spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
for (i = 0; i <= (dev->ishtp_dma_num_slots - required_slots); i++) {
free = 1;
@@ -150,6 +155,11 @@ void ishtp_cl_release_dma_acked_mem(struct ishtp_device *dev,
return;
}
+ if (!dev->ishtp_dma_tx_map) {
+ dev_err(dev->devc, "Fail to allocate Tx map\n");
+ return;
+ }
+
i = (msg_addr - dev->ishtp_host_dma_tx_buf) / DMA_SLOT_SIZE;
spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
for (j = 0; j < acked_slots; j++) {
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
2022-11-22 13:48 [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map Jiasheng Jiang
@ 2022-12-20 14:51 ` Jiri Kosina
2022-12-20 17:08 ` srinivas pandruvada
1 sibling, 0 replies; 5+ messages in thread
From: Jiri Kosina @ 2022-12-20 14:51 UTC (permalink / raw)
To: Jiasheng Jiang
Cc: srinivas.pandruvada, benjamin.tissoires, linux-input,
linux-kernel
On Tue, 22 Nov 2022, Jiasheng Jiang wrote:
> As the kcalloc may return NULL pointer,
> it should be better to check the ishtp_dma_tx_map
> before use in order to avoid NULL pointer dereference.
>
> Fixes: 3703f53b99e4 ("HID: intel_ish-hid: ISH Transport layer")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Srinivas, can I get your Ack on this one, please?
I'd much prefer to perform the check right at the allocation time, but
that would need some more code refactoring (as
there is currently no way for ishtp_cl_alloc_dma_buf() to fail).
> ---
> drivers/hid/intel-ish-hid/ishtp/dma-if.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/hid/intel-ish-hid/ishtp/dma-if.c b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> index 40554c8daca0..00046cbfd4ed 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> +++ b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> @@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,
> int required_slots = (size / DMA_SLOT_SIZE)
> + 1 * (size % DMA_SLOT_SIZE != 0);
>
> + if (!dev->ishtp_dma_tx_map) {
> + dev_err(dev->devc, "Fail to allocate Tx map\n");
I'd also suggest to use "Failed to ..." instead.
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
2022-11-22 13:48 [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map Jiasheng Jiang
2022-12-20 14:51 ` Jiri Kosina
@ 2022-12-20 17:08 ` srinivas pandruvada
2022-12-21 8:02 ` Xu, Even
1 sibling, 1 reply; 5+ messages in thread
From: srinivas pandruvada @ 2022-12-20 17:08 UTC (permalink / raw)
To: Jiasheng Jiang, jikos, benjamin.tissoires, Even Xu
Cc: linux-input, linux-kernel
On Tue, 2022-11-22 at 21:48 +0800, Jiasheng Jiang wrote:
> As the kcalloc may return NULL pointer,
> it should be better to check the ishtp_dma_tx_map
> before use in order to avoid NULL pointer dereference.
>
> Fixes: 3703f53b99e4 ("HID: intel_ish-hid: ISH Transport layer")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
+Even Xu, We should do during alloc. Please try to submit a change for
that for later kernel rev as it will require error processing during
hbm dispatch.
> drivers/hid/intel-ish-hid/ishtp/dma-if.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> index 40554c8daca0..00046cbfd4ed 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> +++ b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> @@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct
> ishtp_device *dev,
> int required_slots = (size / DMA_SLOT_SIZE)
> + 1 * (size % DMA_SLOT_SIZE != 0);
>
> + if (!dev->ishtp_dma_tx_map) {
> + dev_err(dev->devc, "Fail to allocate Tx map\n");
> + return NULL;
> + }
> +
> spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
> for (i = 0; i <= (dev->ishtp_dma_num_slots - required_slots);
> i++) {
> free = 1;
> @@ -150,6 +155,11 @@ void ishtp_cl_release_dma_acked_mem(struct
> ishtp_device *dev,
> return;
> }
>
> + if (!dev->ishtp_dma_tx_map) {
> + dev_err(dev->devc, "Fail to allocate Tx map\n");
> + return;
> + }
> +
> i = (msg_addr - dev->ishtp_host_dma_tx_buf) / DMA_SLOT_SIZE;
> spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
> for (j = 0; j < acked_slots; j++) {
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
2022-12-20 17:08 ` srinivas pandruvada
@ 2022-12-21 8:02 ` Xu, Even
2023-01-02 12:51 ` Jiri Kosina
0 siblings, 1 reply; 5+ messages in thread
From: Xu, Even @ 2022-12-21 8:02 UTC (permalink / raw)
To: srinivas pandruvada, Jiasheng Jiang, jikos@kernel.org,
benjamin.tissoires@redhat.com
Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Yes, Srinivas, agree with you, the error handling should be added during allocation.
Will submit the patch for it.
Thanks!
Best Regards,
Even Xu
-----Original Message-----
From: srinivas pandruvada <srinivas.pandruvada@linux.intel.com>
Sent: Wednesday, December 21, 2022 1:08 AM
To: Jiasheng Jiang <jiasheng@iscas.ac.cn>; jikos@kernel.org; benjamin.tissoires@redhat.com; Xu, Even <even.xu@intel.com>
Cc: linux-input@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
On Tue, 2022-11-22 at 21:48 +0800, Jiasheng Jiang wrote:
> As the kcalloc may return NULL pointer, it should be better to check
> the ishtp_dma_tx_map before use in order to avoid NULL pointer
> dereference.
>
> Fixes: 3703f53b99e4 ("HID: intel_ish-hid: ISH Transport layer")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
+Even Xu, We should do during alloc. Please try to submit a change for
that for later kernel rev as it will require error processing during hbm dispatch.
> drivers/hid/intel-ish-hid/ishtp/dma-if.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> index 40554c8daca0..00046cbfd4ed 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> +++ b/drivers/hid/intel-ish-hid/ishtp/dma-if.c
> @@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct
> ishtp_device *dev,
> int required_slots = (size / DMA_SLOT_SIZE)
> + 1 * (size % DMA_SLOT_SIZE != 0);
>
> + if (!dev->ishtp_dma_tx_map) {
> + dev_err(dev->devc, "Fail to allocate Tx map\n");
> + return NULL;
> + }
> +
> spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
> for (i = 0; i <= (dev->ishtp_dma_num_slots - required_slots);
> i++) {
> free = 1;
> @@ -150,6 +155,11 @@ void ishtp_cl_release_dma_acked_mem(struct
> ishtp_device *dev,
> return;
> }
>
> + if (!dev->ishtp_dma_tx_map) {
> + dev_err(dev->devc, "Fail to allocate Tx map\n");
> + return;
> + }
> +
> i = (msg_addr - dev->ishtp_host_dma_tx_buf) / DMA_SLOT_SIZE;
> spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
> for (j = 0; j < acked_slots; j++) {
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map
2022-12-21 8:02 ` Xu, Even
@ 2023-01-02 12:51 ` Jiri Kosina
0 siblings, 0 replies; 5+ messages in thread
From: Jiri Kosina @ 2023-01-02 12:51 UTC (permalink / raw)
To: Xu, Even
Cc: srinivas pandruvada, Jiasheng Jiang,
benjamin.tissoires@redhat.com, linux-input@vger.kernel.org,
linux-kernel@vger.kernel.org
On Wed, 21 Dec 2022, Xu, Even wrote:
> Yes, Srinivas, agree with you, the error handling should be added during allocation.
> Will submit the patch for it.
Thanks. Before that patch materializes though, I've queued Jiasheng's fix
as a band-aid for 6.2.
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-01-02 12:51 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-22 13:48 [PATCH] HID: intel_ish-hid: Add check for ishtp_dma_tx_map Jiasheng Jiang
2022-12-20 14:51 ` Jiri Kosina
2022-12-20 17:08 ` srinivas pandruvada
2022-12-21 8:02 ` Xu, Even
2023-01-02 12:51 ` Jiri Kosina
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).