The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / package / bellagio / 0004-segfault-on-removeFromWaitResource.patch
diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/package/bellagio/0004-segfault-on-removeFromWaitResource.patch b/cirros-testvm/src-cirros/buildroot-2015.05/package/bellagio/0004-segfault-on-removeFromWaitResource.patch
new file mode 100644 (file)
index 0000000..f52a2c3
--- /dev/null
@@ -0,0 +1,37 @@
+We always access globalComponentList[] at indexComponent=-1 which causes a
+segfault. Use i as the index instead.
+
+Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>
+
+--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old    2012-03-13 10:15:25.743940980 +0000
++++ bellagio-0.9.3/src/omx_reference_resource_manager.c        2012-03-13 10:18:02.201971009 +0000
+@@ -485,7 +485,6 @@
+ OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) {
+       omx_base_component_PrivateType* omx_base_component_Private;
+       int i = 0;
+-      int indexComponent = -1;
+       DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__);
+       omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate;
+@@ -493,16 +492,13 @@
+       while(listOfcomponentRegistered[i].component_name != NULL ) {
+               if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) {
+                       // found component in the list of the resource manager
+-                      removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp);
+-                      break;
++                      removeElemFromList(&globalComponentList[i], openmaxStandComp);
++                      DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
++                      return OMX_ErrorNone;
+               }
+               i++;
+       }
+-      if (indexComponent <0) {
+-              // No resource to be handled
+-              DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
+-              return OMX_ErrorNone;
+-      }
+-      DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
++      // No resource to be handled
++      DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
+       return OMX_ErrorNone;
+ }