Ramirez Luna, Omar had written, on 01/11/2010 02:12 PM, the following:
[...]

diff --git a/drivers/dsp/bridge/pmgr/wcd.c b/drivers/dsp/bridge/pmgr/wcd.c
index 02def74..f52b7b8 100644
--- a/drivers/dsp/bridge/pmgr/wcd.c
+++ b/drivers/dsp/bridge/pmgr/wcd.c
[...]


 static inline void __cp_fm_usr(void *to, const void __user *from,
@@ -273,13 +286,48 @@ static inline void __cp_to_usr(void __user *to, const 
void *from,
 inline DSP_STATUS WCD_CallDevIOCtl(u32 cmd, union Trapped_Args *args,
                                    u32 *result, void *pr_ctxt)
 {
-       if (cmd < ARRAY_SIZE(WCD_cmdTable)) {
-               /* make the fxn call via the cmd table */
-               *result = (*WCD_cmdTable[cmd].fxn) (args, pr_ctxt);
-               return DSP_SOK;
+       u32(*ioctl_cmd)(union Trapped_Args *args, void *pr_ctxt);
+       int i;
+
+       if (_IOC_TYPE(cmd) != DB) {
+               pr_err("%s: Incompatible dspbridge ioctl number\n", __func__);
+               goto err;
        }

-       return DSP_EINVALIDARG;
+       /* Retrieve the fxn via the cmd table */
+       i = cmd & DB_IOC_MASK;
+       switch (cmd & DB_MODULE_MASK) {
+       case DB_MGR:
+               ioctl_cmd = mgr_cmd[i].fxn;
just realized we have a risk here. if i > sizeof(mgr_cmd), then we will not catch the out of range error.
[...]
--
Regards,
Nishanth Menon
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to