am 6a34b0d9: Camera3: Report frame errors during stalls

* commit '6a34b0d90938f808b052db880301156debda9c90':
  Camera3: Report frame errors during stalls
diff --git a/BoardConfig.mk b/BoardConfig.mk
index fd48f5e..f4354f4 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -16,7 +16,6 @@
 
 TARGET_CPU_ABI := armeabi-v7a
 TARGET_CPU_ABI2 := armeabi
-TARGET_CPU_SMP := true
 TARGET_ARCH := arm
 TARGET_ARCH_VARIANT := armv7-a-neon
 TARGET_CPU_VARIANT := krait
@@ -107,7 +106,6 @@
 BOARD_SEPOLICY_DIRS += \
        device/lge/hammerhead/sepolicy
 
-# The list below is order dependent
 BOARD_SEPOLICY_UNION += \
        app.te \
        bluetooth_loader.te \
@@ -117,6 +115,7 @@
        domain.te \
        file.te \
        hostapd.te \
+       init.te \
        irsc_util.te \
        mediaserver.te \
        mpdecision.te \
@@ -150,6 +149,10 @@
 USE_DEVICE_SPECIFIC_QCOM_PROPRIETARY:= true
 USE_DEVICE_SPECIFIC_CAMERA:= true
 
+ifeq ($(USE_SVELTE_KERNEL),true)
+MALLOC_IMPL := dlmalloc
+endif
+
 -include vendor/lge/hammerhead/BoardConfigVendor.mk
 
 # Enable Minikin text layout engine (will be the default soon)
diff --git a/camera/QCamera2/HAL/QCamera2Factory.cpp b/camera/QCamera2/HAL/QCamera2Factory.cpp
index 4408cce..03d99eb 100644
--- a/camera/QCamera2/HAL/QCamera2Factory.cpp
+++ b/camera/QCamera2/HAL/QCamera2Factory.cpp
@@ -202,7 +202,7 @@
 }
 
 struct hw_module_methods_t QCamera2Factory::mModuleMethods = {
-    open: QCamera2Factory::camera_device_open,
+    .open = QCamera2Factory::camera_device_open,
 };
 
 }; // namespace qcamera
diff --git a/camera/QCamera2/HAL/QCamera2HWI.cpp b/camera/QCamera2/HAL/QCamera2HWI.cpp
index 9579365..6bd51ea 100644
--- a/camera/QCamera2/HAL/QCamera2HWI.cpp
+++ b/camera/QCamera2/HAL/QCamera2HWI.cpp
@@ -49,35 +49,35 @@
 static pthread_mutex_t g_camlock = PTHREAD_MUTEX_INITIALIZER;
 
 camera_device_ops_t QCamera2HardwareInterface::mCameraOps = {
-    set_preview_window:         QCamera2HardwareInterface::set_preview_window,
-    set_callbacks:              QCamera2HardwareInterface::set_CallBacks,
-    enable_msg_type:            QCamera2HardwareInterface::enable_msg_type,
-    disable_msg_type:           QCamera2HardwareInterface::disable_msg_type,
-    msg_type_enabled:           QCamera2HardwareInterface::msg_type_enabled,
+    .set_preview_window =         QCamera2HardwareInterface::set_preview_window,
+    .set_callbacks =              QCamera2HardwareInterface::set_CallBacks,
+    .enable_msg_type =            QCamera2HardwareInterface::enable_msg_type,
+    .disable_msg_type =           QCamera2HardwareInterface::disable_msg_type,
+    .msg_type_enabled =           QCamera2HardwareInterface::msg_type_enabled,
 
-    start_preview:              QCamera2HardwareInterface::start_preview,
-    stop_preview:               QCamera2HardwareInterface::stop_preview,
-    preview_enabled:            QCamera2HardwareInterface::preview_enabled,
-    store_meta_data_in_buffers: QCamera2HardwareInterface::store_meta_data_in_buffers,
+    .start_preview =              QCamera2HardwareInterface::start_preview,
+    .stop_preview =               QCamera2HardwareInterface::stop_preview,
+    .preview_enabled =            QCamera2HardwareInterface::preview_enabled,
+    .store_meta_data_in_buffers = QCamera2HardwareInterface::store_meta_data_in_buffers,
 
-    start_recording:            QCamera2HardwareInterface::start_recording,
-    stop_recording:             QCamera2HardwareInterface::stop_recording,
-    recording_enabled:          QCamera2HardwareInterface::recording_enabled,
-    release_recording_frame:    QCamera2HardwareInterface::release_recording_frame,
+    .start_recording =            QCamera2HardwareInterface::start_recording,
+    .stop_recording =             QCamera2HardwareInterface::stop_recording,
+    .recording_enabled =          QCamera2HardwareInterface::recording_enabled,
+    .release_recording_frame =    QCamera2HardwareInterface::release_recording_frame,
 
-    auto_focus:                 QCamera2HardwareInterface::auto_focus,
-    cancel_auto_focus:          QCamera2HardwareInterface::cancel_auto_focus,
+    .auto_focus =                 QCamera2HardwareInterface::auto_focus,
+    .cancel_auto_focus =          QCamera2HardwareInterface::cancel_auto_focus,
 
-    take_picture:               QCamera2HardwareInterface::take_picture,
-    cancel_picture:             QCamera2HardwareInterface::cancel_picture,
+    .take_picture =               QCamera2HardwareInterface::take_picture,
+    .cancel_picture =             QCamera2HardwareInterface::cancel_picture,
 
-    set_parameters:             QCamera2HardwareInterface::set_parameters,
-    get_parameters:             QCamera2HardwareInterface::get_parameters,
-    put_parameters:             QCamera2HardwareInterface::put_parameters,
-    send_command:               QCamera2HardwareInterface::send_command,
+    .set_parameters =             QCamera2HardwareInterface::set_parameters,
+    .get_parameters =             QCamera2HardwareInterface::get_parameters,
+    .put_parameters =             QCamera2HardwareInterface::put_parameters,
+    .send_command =               QCamera2HardwareInterface::send_command,
 
-    release:                    QCamera2HardwareInterface::release,
-    dump:                       QCamera2HardwareInterface::dump,
+    .release =                    QCamera2HardwareInterface::release,
+    .dump =                       QCamera2HardwareInterface::dump,
 };
 
 /*===========================================================================
diff --git a/camera/QCamera2/HAL/QCamera2Hal.cpp b/camera/QCamera2/HAL/QCamera2Hal.cpp
index cfae8e5..685fa96 100644
--- a/camera/QCamera2/HAL/QCamera2Hal.cpp
+++ b/camera/QCamera2/HAL/QCamera2Hal.cpp
@@ -30,23 +30,23 @@
 #include "QCamera2Factory.h"
 
 static hw_module_t camera_common = {
-    tag: HARDWARE_MODULE_TAG,
-    module_api_version: CAMERA_MODULE_API_VERSION_1_0,
-    hal_api_version: HARDWARE_HAL_API_VERSION,
-    id: CAMERA_HARDWARE_MODULE_ID,
-    name: "QCamera Module",
-    author: "Qualcomm Innovation Center Inc",
-    methods: &qcamera::QCamera2Factory::mModuleMethods,
-    dso: NULL,
-    reserved:  {0},
+    .tag = HARDWARE_MODULE_TAG,
+    .module_api_version = CAMERA_MODULE_API_VERSION_1_0,
+    .hal_api_version = HARDWARE_HAL_API_VERSION,
+    .id = CAMERA_HARDWARE_MODULE_ID,
+    .name = "QCamera Module",
+    .author = "Qualcomm Innovation Center Inc",
+    .methods = &qcamera::QCamera2Factory::mModuleMethods,
+    .dso = NULL,
+    .reserved =  {0},
 };
 
 camera_module_t HAL_MODULE_INFO_SYM = {
-    common: camera_common,
-    get_number_of_cameras: qcamera::QCamera2Factory::get_number_of_cameras,
-    get_camera_info: qcamera::QCamera2Factory::get_camera_info,
-    set_callbacks: NULL,
-    get_vendor_tag_ops: NULL,
-    open_legacy: NULL,
-    reserved: {0}
+    .common = camera_common,
+    .get_number_of_cameras = qcamera::QCamera2Factory::get_number_of_cameras,
+    .get_camera_info = qcamera::QCamera2Factory::get_camera_info,
+    .set_callbacks = NULL,
+    .get_vendor_tag_ops = NULL,
+    .open_legacy = NULL,
+    .reserved = {0}
 };
diff --git a/camera/QCamera2/HAL3/Android.mk b/camera/QCamera2/HAL3/Android.mk
index d233fa0..1688267 100644
--- a/camera/QCamera2/HAL3/Android.mk
+++ b/camera/QCamera2/HAL3/Android.mk
@@ -2,6 +2,10 @@
 
 include $(CLEAR_VARS)
 
+# QCamera3Factory.cpp has unused parameters.
+# QCamera3Channel.cpp compares array 'str' to a null pointer.
+LOCAL_CLANG_CFLAGS += -Wno-unused-parameter -Wno-tautological-pointer-compare
+
 LOCAL_SRC_FILES := \
         QCamera3Factory.cpp \
         QCamera3Hal.cpp \
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index bbecbf4..4dc5a3b 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -49,8 +49,6 @@
 namespace qcamera {
 static const char ExifAsciiPrefix[] =
     { 0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0 };          // "ASCII\0\0\0"
-static const char ExifUndefinedPrefix[] =
-    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };   // "\0\0\0\0\0\0\0\0"
 
 #define EXIF_ASCII_PREFIX_SIZE           8   //(sizeof(ExifAsciiPrefix))
 #define FOCAL_LENGTH_DECIMAL_PRECISION   1000
diff --git a/camera/QCamera2/HAL3/QCamera3Factory.cpp b/camera/QCamera2/HAL3/QCamera3Factory.cpp
index 65fe67b..7823cfb 100644
--- a/camera/QCamera2/HAL3/QCamera3Factory.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Factory.cpp
@@ -281,7 +281,7 @@
 }
 
 struct hw_module_methods_t QCamera3Factory::mModuleMethods = {
-    open: QCamera3Factory::camera_device_open,
+    .open = QCamera3Factory::camera_device_open,
 };
 
 }; // namespace qcamera
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index c04a00e..7277dca 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -197,15 +197,15 @@
 /* Custom tag definitions */
 
 camera3_device_ops_t QCamera3HardwareInterface::mCameraOps = {
-    initialize:                         QCamera3HardwareInterface::initialize,
-    configure_streams:                  QCamera3HardwareInterface::configure_streams,
-    register_stream_buffers:            NULL,
-    construct_default_request_settings: QCamera3HardwareInterface::construct_default_request_settings,
-    process_capture_request:            QCamera3HardwareInterface::process_capture_request,
-    get_metadata_vendor_tag_ops:        NULL,
-    dump:                               QCamera3HardwareInterface::dump,
-    flush:                              QCamera3HardwareInterface::flush,
-    reserved:                           {0},
+    .initialize =                         QCamera3HardwareInterface::initialize,
+    .configure_streams =                  QCamera3HardwareInterface::configure_streams,
+    .register_stream_buffers =            NULL,
+    .construct_default_request_settings = QCamera3HardwareInterface::construct_default_request_settings,
+    .process_capture_request =            QCamera3HardwareInterface::process_capture_request,
+    .get_metadata_vendor_tag_ops =        NULL,
+    .dump =                               QCamera3HardwareInterface::dump,
+    .flush =                              QCamera3HardwareInterface::flush,
+    .reserved =                           {0},
 };
 
 int QCamera3HardwareInterface::kMaxInFlight = 5;
@@ -501,7 +501,6 @@
         camera3_stream_configuration_t *streamList)
 {
     int rc = NO_ERROR;
-    int32_t available_processed_sizes[MAX_SIZES_CNT * 2];
 
     /*
     * Loop through all streams requested in configuration
@@ -1133,7 +1132,7 @@
 int64_t QCamera3HardwareInterface::getMinFrameDuration(const camera3_capture_request_t *request)
 {
     bool hasJpegStream = false;
-    bool hasRawStream = false;
+    bool hasRawStream __unused = false;
     for (uint32_t i = 0; i < request->num_output_buffers; i ++) {
         const camera3_stream_t *stream = request->output_buffers[i].stream;
         if (stream->format == HAL_PIXEL_FORMAT_BLOB)
@@ -5560,8 +5559,6 @@
         char gps_methods[GPS_PROCESSING_METHOD_SIZE];
         const char *gps_methods_src = (const char *)
                 frame_settings.find(ANDROID_JPEG_GPS_PROCESSING_METHOD).data.u8;
-        uint32_t count = frame_settings.find(
-                ANDROID_JPEG_GPS_PROCESSING_METHOD).count;
         memset(gps_methods, 0, sizeof(gps_methods));
         strncpy(gps_methods, gps_methods_src, sizeof(gps_methods));
         rc = AddSetMetaEntryToBatch(hal_metadata, CAM_INTF_META_JPEG_GPS_PROC_METHODS, sizeof(gps_methods), gps_methods);
diff --git a/camera/QCamera2/HAL3/QCamera3Hal.cpp b/camera/QCamera2/HAL3/QCamera3Hal.cpp
index 673dc62..4158eca 100644
--- a/camera/QCamera2/HAL3/QCamera3Hal.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Hal.cpp
@@ -31,23 +31,23 @@
 #include "QCamera3VendorTags.h"
 
 static hw_module_t camera_common = {
-    tag: HARDWARE_MODULE_TAG,
-    module_api_version: CAMERA_MODULE_API_VERSION_2_3,
-    hal_api_version: HARDWARE_HAL_API_VERSION,
-    id: CAMERA_HARDWARE_MODULE_ID,
-    name: "QCamera Module",
-    author: "Qualcomm Innovation Center Inc",
-    methods: &qcamera::QCamera3Factory::mModuleMethods,
-    dso: NULL,
-    reserved:  {0},
+    .tag = HARDWARE_MODULE_TAG,
+    .module_api_version = CAMERA_MODULE_API_VERSION_2_3,
+    .hal_api_version = HARDWARE_HAL_API_VERSION,
+    .id = CAMERA_HARDWARE_MODULE_ID,
+    .name = "QCamera Module",
+    .author = "Qualcomm Innovation Center Inc",
+    .methods = &qcamera::QCamera3Factory::mModuleMethods,
+    .dso = NULL,
+    .reserved =  {0},
 };
 
 camera_module_t HAL_MODULE_INFO_SYM = {
-    common: camera_common,
-    get_number_of_cameras: qcamera::QCamera3Factory::get_number_of_cameras,
-    get_camera_info: qcamera::QCamera3Factory::get_camera_info,
-    set_callbacks: qcamera::QCamera3Factory::set_callbacks,
-    get_vendor_tag_ops: qcamera::QCamera3VendorTags::get_vendor_tag_ops,
-    open_legacy: qcamera::QCamera3Factory::open_legacy,
-    reserved: {0}
+    .common = camera_common,
+    .get_number_of_cameras = qcamera::QCamera3Factory::get_number_of_cameras,
+    .get_camera_info = qcamera::QCamera3Factory::get_camera_info,
+    .set_callbacks = qcamera::QCamera3Factory::set_callbacks,
+    .get_vendor_tag_ops = qcamera::QCamera3VendorTags::get_vendor_tag_ops,
+    .open_legacy = qcamera::QCamera3Factory::open_legacy,
+    .reserved = {0}
 };
diff --git a/camera/QCamera2/HAL3/QCamera3VendorTags.cpp b/camera/QCamera2/HAL3/QCamera3VendorTags.cpp
index 3ded922..b03c235 100644
--- a/camera/QCamera2/HAL3/QCamera3VendorTags.cpp
+++ b/camera/QCamera2/HAL3/QCamera3VendorTags.cpp
@@ -39,8 +39,6 @@
 
 namespace qcamera {
 
-const int QCAMERA3_SECTION_COUNT = QCAMERA3_SECTIONS_END - VENDOR_SECTION;
-
 enum qcamera3_ext_tags qcamera3_ext3_section_bounds[QCAMERA3_SECTIONS_END -
     VENDOR_SECTION] = {
         QCAMERA3_PRIVATEDATA_END,
diff --git a/camera/QCamera2/stack/common/cam_list.h b/camera/QCamera2/stack/common/cam_list.h
index 36379af..24375da 100755
--- a/camera/QCamera2/stack/common/cam_list.h
+++ b/camera/QCamera2/stack/common/cam_list.h
@@ -36,7 +36,7 @@
 #include <stddef.h>
 
 #define member_of(ptr, type, member) ({ \
-  const typeof(((type *)0)->member) *__mptr = (ptr); \
+  const __typeof__(((type *)0)->member) *__mptr = (ptr); \
   (type *)((char *)__mptr - offsetof(type,member));})
 
 struct cam_list {
diff --git a/camera/QCamera2/stack/common/cam_queue.h b/camera/QCamera2/stack/common/cam_queue.h
index a23c622..b6a3c3f 100755
--- a/camera/QCamera2/stack/common/cam_queue.h
+++ b/camera/QCamera2/stack/common/cam_queue.h
@@ -29,6 +29,8 @@
 
 #include "cam_list.h"
 
+#include <stdlib.h>
+
 typedef struct {
     struct cam_list list;
     void *data;
diff --git a/camera/QCamera2/stack/common/cam_types.h b/camera/QCamera2/stack/common/cam_types.h
index 9c3194e..2bdb111 100644
--- a/camera/QCamera2/stack/common/cam_types.h
+++ b/camera/QCamera2/stack/common/cam_types.h
@@ -31,6 +31,7 @@
 #define __QCAMERA_TYPES_H__
 
 #include <stdint.h>
+#include <string.h>
 #include <pthread.h>
 #include <inttypes.h>
 #include <media/msmb_camera.h>
diff --git a/camera/QCamera2/stack/mm-camera-interface/Android.mk b/camera/QCamera2/stack/mm-camera-interface/Android.mk
index f3a515b..f60cd10 100755
--- a/camera/QCamera2/stack/mm-camera-interface/Android.mk
+++ b/camera/QCamera2/stack/mm-camera-interface/Android.mk
@@ -35,7 +35,6 @@
 LOCAL_SRC_FILES := $(MM_CAM_FILES)
 
 LOCAL_MODULE           := libmmcamera_interface
-LOCAL_PRELINK_MODULE   := false
 LOCAL_SHARED_LIBRARIES := libdl libcutils liblog
 LOCAL_MODULE_TAGS := optional
 
diff --git a/camera/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c b/camera/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
index 0e6c774..d68735a 100644
--- a/camera/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
+++ b/camera/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
@@ -213,6 +213,8 @@
     read_len = read(poll_cb->pfds[0], &cmd_evt, sizeof(cmd_evt));
     CDBG("%s: read_fd = %d, read_len = %d, expect_len = %d cmd = %d",
          __func__, poll_cb->pfds[0], (int)read_len, (int)sizeof(cmd_evt), cmd_evt.cmd);
+    // read_len is unused if not debugging.
+    (void)read_len;
     switch (cmd_evt.cmd) {
     case MM_CAMERA_PIPE_CMD_POLL_ENTRIES_UPDATED:
     case MM_CAMERA_PIPE_CMD_POLL_ENTRIES_UPDATED_ASYNC:
diff --git a/camera/QCamera2/stack/mm-camera-test/src/mm_qcamera_app.c b/camera/QCamera2/stack/mm-camera-test/src/mm_qcamera_app.c
index 80398e4..aa3571a 100644
--- a/camera/QCamera2/stack/mm-camera-test/src/mm_qcamera_app.c
+++ b/camera/QCamera2/stack/mm-camera-test/src/mm_qcamera_app.c
@@ -753,7 +753,9 @@
     int c;
     int rc;
     int run_tc = 0;
+#if 0
     int run_dual_tc = 0;
+#endif
     mm_camera_app_t my_cam_app;
 
     CDBG("\nCamera Test Application\n");
@@ -764,7 +766,9 @@
                run_tc = 1;
                break;
            case 'd':
+#if 0
                run_dual_tc = 1;
+#endif
                break;
            case 'h':
            default:
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/Android.mk b/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
index ede4148..ae1ab73 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
+++ b/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
@@ -23,7 +23,6 @@
     src/mm_jpeg_interface.c
 
 LOCAL_MODULE           := libmmjpeg_interface
-LOCAL_PRELINK_MODULE   := false
 LOCAL_SHARED_LIBRARIES := libdl libcutils liblog libqomx_core
 LOCAL_MODULE_TAGS := optional
 
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk b/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
index 03dde01..6a5df29 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
+++ b/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
@@ -29,7 +29,6 @@
 LOCAL_SRC_FILES += mm_jpeg_test.c 
 
 LOCAL_MODULE           := mm-jpeg-interface-test
-LOCAL_PRELINK_MODULE   := false
 LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libmmjpeg_interface
 
 include $(BUILD_EXECUTABLE)
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_ionbuf.h b/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_ionbuf.h
index d25156b..318d1f1 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_ionbuf.h
+++ b/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_ionbuf.h
@@ -32,6 +32,7 @@
 
 
 #include <stdio.h>
+#include <string.h>
 #include <linux/msm_ion.h>
 #include <sys/mman.h>
 #include <unistd.h>
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_test.c b/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_test.c
index 8ffbb6b..d23f7ee 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_test.c
+++ b/camera/QCamera2/stack/mm-jpeg-interface/test/mm_jpeg_test.c
@@ -30,6 +30,7 @@
 #include "mm_jpeg_interface.h"
 #include "mm_jpeg_ionbuf.h"
 #include <sys/time.h>
+#include <stdlib.h>
 
 /** DUMP_TO_FILE:
  *  @filename: file name
@@ -39,10 +40,9 @@
  *  dump the image to the file
  **/
 #define DUMP_TO_FILE(filename, p_addr, len) ({ \
-  int rc = 0; \
   FILE *fp = fopen(filename, "w+"); \
   if (fp) { \
-    rc = fwrite(p_addr, 1, len, fp); \
+    fwrite(p_addr, 1, len, fp); \
     fclose(fp); \
   } else { \
     CDBG_ERROR("%s:%d] cannot dump image", __func__, __LINE__); \
@@ -139,7 +139,6 @@
 
 int mm_jpeg_test_read(mm_jpeg_intf_test_t *p_obj)
 {
-  int rc = 0;
   FILE *fp = NULL;
   int file_size = 0;
   fp = fopen(p_obj->filename, "rb");
diff --git a/camera/QCamera2/util/QCameraCmdThread.cpp b/camera/QCamera2/util/QCameraCmdThread.cpp
index c5be4ad..4b24649 100644
--- a/camera/QCamera2/util/QCameraCmdThread.cpp
+++ b/camera/QCamera2/util/QCameraCmdThread.cpp
@@ -29,6 +29,7 @@
 
 #include <utils/Errors.h>
 #include <utils/Log.h>
+#include <malloc.h>
 #include <sys/prctl.h>
 #include "QCameraCmdThread.h"
 
diff --git a/camera/QCamera2/util/QCameraQueue.cpp b/camera/QCamera2/util/QCameraQueue.cpp
index 61340e5..d254169 100644
--- a/camera/QCamera2/util/QCameraQueue.cpp
+++ b/camera/QCamera2/util/QCameraQueue.cpp
@@ -29,6 +29,8 @@
 
 #include <utils/Errors.h>
 #include <utils/Log.h>
+#include <malloc.h>
+#include <string.h>
 #include "QCameraQueue.h"
 
 namespace qcamera {
diff --git a/camera/mm-image-codec/qomx_core/Android.mk b/camera/mm-image-codec/qomx_core/Android.mk
index ad414c9..28bea80 100644
--- a/camera/mm-image-codec/qomx_core/Android.mk
+++ b/camera/mm-image-codec/qomx_core/Android.mk
@@ -21,7 +21,6 @@
 LOCAL_SRC_FILES := qomx_core.c
 
 LOCAL_MODULE           := libqomx_core
-LOCAL_PRELINK_MODULE   := false
 LOCAL_SHARED_LIBRARIES := libcutils libdl
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/camera/mm-image-codec/qomx_core/qomx_core.c b/camera/mm-image-codec/qomx_core/qomx_core.c
index 3fbd3e9..19acef4 100644
--- a/camera/mm-image-codec/qomx_core/qomx_core.c
+++ b/camera/mm-image-codec/qomx_core/qomx_core.c
@@ -159,7 +159,6 @@
 {
   OMX_ERRORTYPE rc = OMX_ErrorNone;
   int comp_idx = 0, inst_idx = 0;
-  char libName[BUFF_SIZE] = {0};
   void *p_obj = NULL;
   OMX_COMPONENTTYPE *p_comp = NULL;
   omx_core_component_t *p_core_comp = NULL;
diff --git a/camera/mm-image-codec/qomx_core/qomx_core.h b/camera/mm-image-codec/qomx_core/qomx_core.h
index f59f7cf..c5e792b 100644
--- a/camera/mm-image-codec/qomx_core/qomx_core.h
+++ b/camera/mm-image-codec/qomx_core/qomx_core.h
@@ -29,6 +29,7 @@
 #define QOMX_CORE_H
 
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <malloc.h>
 #include <pthread.h>
diff --git a/device.mk b/device.mk
index 41486f8..a7b6d3d 100644
--- a/device.mk
+++ b/device.mk
@@ -113,8 +113,6 @@
 PRODUCT_COPY_FILES += \
     device/lge/hammerhead/spn-conf.xml:system/etc/spn-conf.xml
 
-PRODUCT_TAGS += dalvik.gc.type-precise
-
 PRODUCT_AAPT_CONFIG := normal
 PRODUCT_AAPT_PREF_CONFIG := xxhdpi
 
diff --git a/init.hammerhead.rc b/init.hammerhead.rc
index 36e1ec3..6966517 100644
--- a/init.hammerhead.rc
+++ b/init.hammerhead.rc
@@ -122,12 +122,6 @@
     #venus
     write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
 
-    # Subsytem Ramdump collection
-    mkdir /data/tombstones 0777 system system
-    mkdir /data/tombstones/ramdump 0777 system system
-    restorecon_recursive /data/tombstones
-    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
-
     # leds
     chown system system /sys/class/leds/red/on_off_ms
     chown system system /sys/class/leds/green/on_off_ms
@@ -140,6 +134,10 @@
 
     mkdir /data/media 0770 media_rw media_rw
 
+    # Subsytem Ramdump collection
+    mkdir /data/tombstones/ramdump 0777 system system
+    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
+
     # NFC: create data/nfc for nv storage
     mkdir /data/nfc 0770 nfc nfc
     mkdir /data/nfc/param 0770 nfc nfc
@@ -199,6 +197,7 @@
     write /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq 960000
     write /sys/devices/system/cpu/cpufreq/ondemand/sync_freq 960000
     write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load 80
+    restorecon_recursive /sys/devices/system/cpu/cpufreq/ondemand
     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
     write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000
     write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
diff --git a/libsensors/Android.mk b/libsensors/Android.mk
index efb2ba3..5397d3b 100644
--- a/libsensors/Android.mk
+++ b/libsensors/Android.mk
@@ -24,7 +24,6 @@
 
 LOCAL_MODULE := sensors.hammerhead
 
-LOCAL_PRELINK_MODULE := false
 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
 
 LOCAL_MODULE_TAGS := optional
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 6753766..be1b318 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -31,6 +31,11 @@
 # Block labeling
 /dev/block/mmcblk0                 u:object_r:root_block_device:s0
 /dev/block/mmcblk0rpmb             u:object_r:drm_block_device:s0
+/dev/block/platform/msm_sdcc\.1/by-name/system       u:object_r:system_block_device:s0
+/dev/block/platform/msm_sdcc\.1/by-name/recovery     u:object_r:recovery_block_device:s0
+/dev/block/platform/msm_sdcc\.1/by-name/userdata     u:object_r:userdata_block_device:s0
+/dev/block/platform/msm_sdcc\.1/by-name/metadata     u:object_r:metadata_block_device:s0
+/dev/block/platform/msm_sdcc\.1/by-name/cache        u:object_r:cache_block_device:s0
 /dev/block/platform/msm_sdcc\.1/by-name/modemst1     u:object_r:modem_block_device:s0
 /dev/block/platform/msm_sdcc\.1/by-name/modemst2    u:object_r:modem_block_device:s0
 /dev/block/platform/msm_sdcc\.1/by-name/fsc         u:object_r:modem_block_device:s0
diff --git a/sepolicy/init.te b/sepolicy/init.te
new file mode 100644
index 0000000..14f1b92
--- /dev/null
+++ b/sepolicy/init.te
@@ -0,0 +1 @@
+allow init diag_device:chr_file unlink;
diff --git a/sepolicy/netmgrd.te b/sepolicy/netmgrd.te
index 39864f6..550e949 100644
--- a/sepolicy/netmgrd.te
+++ b/sepolicy/netmgrd.te
@@ -35,4 +35,5 @@
 allow netmgrd net_radio_prop:property_service set;
 
 # Access to /proc/sys/net/*
-allow netmgrd proc_net:file write;
+allow netmgrd proc_net:file rw_file_perms;
+allow netmgrd proc_net:dir r_dir_perms;
diff --git a/sepolicy/time.te b/sepolicy/time.te
index a3a962b..e7de3cf 100644
--- a/sepolicy/time.te
+++ b/sepolicy/time.te
@@ -1,4 +1,4 @@
-type time, domain;
+type time, domain, mlstrustedsubject;
 type time_exec, exec_type, file_type;
 
 # Started by init