Fix MultiProc_self() in QNX to return the correct value
authorvwan@ti.com <vwan@ti.com>
Tue, 22 Jul 2014 22:23:51 +0000 (15:23 -0700)
committerRobert Tivy <rtivy@ti.com>
Tue, 5 Aug 2014 17:44:00 +0000 (10:44 -0700)
This commit fixes MultiProc_getConfig, so that its returned data structure
does not get corrupted. This in turn fixes MultiProc_self(), which
was returning the corrupted id.

This addresses CQ SDOCM00108594.

Signed-off-by: VW <vwan@ti.com>
qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/Qnx/multiproc_devctl.c
qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/usr/Qnx/MultiProcDrv.c

index 7e65e2a2286e481d398bdf226e24c527bab0e4ec..91a02a75ff06686beae8cfcda21e60667dca58b4 100644 (file)
@@ -6,7 +6,7 @@
  *
  *  ============================================================================
  *
- *  Copyright (c) 2013, Texas Instruments Incorporated
+ *  Copyright (c) 2013-2014, Texas Instruments Incorporated
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
@@ -101,13 +101,14 @@ int syslink_multiproc_getconfig(resmgr_context_t *ctp, io_devctl_t *msg,
 {
     MultiProcDrv_CmdArgs * cargs = (MultiProcDrv_CmdArgs *)
         (_DEVCTL_DATA (msg->i));
-    MultiProc_Config local_config;
-    MultiProc_getConfig (&local_config);
+    MultiProc_Config *     config = (MultiProc_Config *)(cargs+1);
+
+    MultiProc_getConfig(config);
 
     cargs->apiStatus = MultiProc_S_SUCCESS;
     SETIOV(&ctp->iov[0], &msg->o, sizeof(msg->o) +
         sizeof(MultiProcDrv_CmdArgs));
-    SETIOV(&ctp->iov[1], &local_config, sizeof(MultiProc_Config));
+    SETIOV(&ctp->iov[1], config, sizeof(MultiProc_Config));
 
     return _RESMGR_NPARTS(2);
 }
index 8f839c64b443ace3d3529391aaf7431f20ab8541..c4a7b4996a491851616b4ff49ca0aa0ac899c274 100644 (file)
@@ -6,7 +6,7 @@
  *
  *  ============================================================================
  *
- *  Copyright (c) 2013, Texas Instruments Incorporated
+ *  Copyright (c) 2013-2014, Texas Instruments Incorporated
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
@@ -88,7 +88,7 @@ MultiProcDrv_ioctl (UInt32 cmd, Ptr args)
               SETIOV(&mpgetconfig_iov[0], cargs, sizeof(MultiProcDrv_CmdArgs));
               SETIOV(&mpgetconfig_iov[1], cargs->args.getConfig.config,
                   sizeof(MultiProc_Config));
-              osStatus = devctlv(IpcDrv_handle, DCMD_MULTIPROC_GETCONFIG, 1, 2,
+              osStatus = devctlv(IpcDrv_handle, DCMD_MULTIPROC_GETCONFIG, 2, 2,
                   mpgetconfig_iov, mpgetconfig_iov, NULL);
           }
           break;