diff mbox series

ALSA: asihpi: check pao in control_message()

Message ID 87ttypeaqz.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ALSA: asihpi: check pao in control_message() | expand

Commit Message

Kuninori Morimoto March 13, 2023, 12:49 a.m. UTC
control_message() might be called with pao = NULL.
Here indicates control_message() as sample.

(B)	static void control_message(struct hpi_adapter_obj *pao, ...)
	{                                                   ^^^
		struct hpi_hw_obj *phw = pao->priv;
		...                      ^^^
	}

(A)	void _HPI_6205(struct hpi_adapter_obj *pao, ...)
	{                                      ^^^
		...
		case HPI_OBJ_CONTROL:
(B)			control_message(pao, phm, phr);
			break;          ^^^
		...
	}

	void HPI_6205(...)
	{
		...
(A)		_HPI_6205(NULL, phm, phr);
		...       ^^^^
	}

Therefore, We will get too many warning via cppcheck, like below

	sound/pci/asihpi/hpi6205.c:238:27: warning: Possible null pointer dereference: pao [nullPointer]
		 struct hpi_hw_obj *phw = pao->priv;
		                          ^
	sound/pci/asihpi/hpi6205.c:433:13: note: Calling function '_HPI_6205', 1st argument 'NULL' value is 0
		  _HPI_6205(NULL, phm, phr);
		            ^
	sound/pci/asihpi/hpi6205.c:401:20: note: Calling function 'control_message', 1st argument 'pao' value is 0
	   control_message(pao, phm, phr);
	                   ^
Set phr->error like many functions doing, and don't call _HPI_6205()
with NULL.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 sound/pci/asihpi/hpi6205.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Takashi Iwai March 14, 2023, 4:03 p.m. UTC | #1
On Mon, 13 Mar 2023 01:49:24 +0100,
Kuninori Morimoto wrote:
> 
> control_message() might be called with pao = NULL.
> Here indicates control_message() as sample.
> 
> (B)	static void control_message(struct hpi_adapter_obj *pao, ...)
> 	{                                                   ^^^
> 		struct hpi_hw_obj *phw = pao->priv;
> 		...                      ^^^
> 	}
> 
> (A)	void _HPI_6205(struct hpi_adapter_obj *pao, ...)
> 	{                                      ^^^
> 		...
> 		case HPI_OBJ_CONTROL:
> (B)			control_message(pao, phm, phr);
> 			break;          ^^^
> 		...
> 	}
> 
> 	void HPI_6205(...)
> 	{
> 		...
> (A)		_HPI_6205(NULL, phm, phr);
> 		...       ^^^^
> 	}
> 
> Therefore, We will get too many warning via cppcheck, like below
> 
> 	sound/pci/asihpi/hpi6205.c:238:27: warning: Possible null pointer dereference: pao [nullPointer]
> 		 struct hpi_hw_obj *phw = pao->priv;
> 		                          ^
> 	sound/pci/asihpi/hpi6205.c:433:13: note: Calling function '_HPI_6205', 1st argument 'NULL' value is 0
> 		  _HPI_6205(NULL, phm, phr);
> 		            ^
> 	sound/pci/asihpi/hpi6205.c:401:20: note: Calling function 'control_message', 1st argument 'pao' value is 0
> 	   control_message(pao, phm, phr);
> 	                   ^
> Set phr->error like many functions doing, and don't call _HPI_6205()
> with NULL.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Thanks, applied.


Takashi
diff mbox series

Patch

diff --git a/sound/pci/asihpi/hpi6205.c b/sound/pci/asihpi/hpi6205.c
index 27e11b5f70b9..c7d7eff86727 100644
--- a/sound/pci/asihpi/hpi6205.c
+++ b/sound/pci/asihpi/hpi6205.c
@@ -430,7 +430,7 @@  void HPI_6205(struct hpi_message *phm, struct hpi_response *phr)
 		pao = hpi_find_adapter(phm->adapter_index);
 	} else {
 		/* subsys messages don't address an adapter */
-		_HPI_6205(NULL, phm, phr);
+		phr->error = HPI_ERROR_INVALID_OBJ_INDEX;
 		return;
 	}