[PATCH] DSPBRIDGE: dont pass invalid DSP OPP requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If DSP baseimage requests for invalid OPPs, do not pass them
to the rest of the linux kernel subsystem. with a test baseimage
it was found to send
IO_DispatchPM: WMDIOCTL_CONSTRAINT_REQUEST with parameter 0.
this is an invalid OPP ID and should not be passed anywhere.
we add a param check for this prior to passing it along to the
workqueue.

Cc: Ameya Palande <ameya.palande@xxxxxxxxx>
Cc: Deepak Chitriki <deepak.chitriki@xxxxxx>
Cc: Felipe Contreras <felipe.contreras@xxxxxxxxx>
Cc: Hiroshi Doyu <hiroshi.doyu@xxxxxxxxx>
Cc: Omar Ramirez Luna <omar.ramirez@xxxxxx>

Signed-off-by: Nishanth Menon <nm@xxxxxx>
---
 drivers/dsp/bridge/wmd/io_sm.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/dsp/bridge/wmd/io_sm.c b/drivers/dsp/bridge/wmd/io_sm.c
index 6c140c5..618bedb 100644
--- a/drivers/dsp/bridge/wmd/io_sm.c
+++ b/drivers/dsp/bridge/wmd/io_sm.c
@@ -960,9 +960,12 @@ static void IO_DispatchPM(struct work_struct *work)
 			pArg[1] = pIOMgr->pSharedMem->oppRequest.rqstOppPt;
 			DBG_Trace(DBG_LEVEL7, "IO_DispatchPM : Value of OPP "
 				 "value =0x%x \n", pArg[1]);
-			status = pIOMgr->pIntfFxns->pfnDevCntrl(pIOMgr->
-				 hWmdContext, WMDIOCTL_CONSTRAINT_REQUEST,
-				 pArg);
+			if (!pArg[1])
+				status = DSP_EINVALIDARG;
+			else
+				status = pIOMgr->pIntfFxns->pfnDevCntrl(pIOMgr->
+					 hWmdContext,
+					 WMDIOCTL_CONSTRAINT_REQUEST, pArg);
 			if (DSP_FAILED(status)) {
 				DBG_Trace(DBG_LEVEL7, "IO_DispatchPM : Failed "
 					 "to set constraint = 0x%x \n",
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux