QCamera2: HAL3: Unmap reprocess input buffers early

Currently reprocess input buffers are unmapped upon JPEG encode
completion. This is problematic because after HAL returns input buffer
after CPP processing, it doesn't own the buffer any more.

The sequence of events leading to the issue:
  1) Reprocess request 1 enters, input buffer FD is N
  2) HAL caches the input buffer
  3) CPP runs on input buffer, returns buffer to framework.
     Cache entry remains. JPEG encoding starts
  4) Framework frees buffer; FD N is now reusable
  5) Reprocess request 2 enters, new buffer also gets FD N
  6) HAL finds buffer in cache
  7) CPP tries to run, but uses stale cache entry, crashes
  8) (if no crash) JPEG encoding completes, cache cleaned up

Bug: 62721870
Test: Camera CTS
Change-Id: I22a06fad9ead03af917e547a9ee4d49d8db2e2d0
2 files changed
tree: 6932683ba0b0f2131e1987e71fe7605131652ba8
  1. bluetooth/
  2. camera/
  3. common/
  4. dataservices/
  5. dumpstate/
  6. factory-images_marlin/
  7. factory-images_sailfish/
  8. kernel-headers/
  9. libandroid/
  10. liblight/
  11. marlin/
  12. nfc/
  13. original-kernel-headers/
  14. overlay/
  15. power/
  16. radio/
  17. recovery/
  18. sailfish/
  19. seccomp_policy/
  20. self-extractors/
  21. self-extractors_sailfish/
  22. sensorhal/
  23. sepolicy/
  24. telephony/
  25. thermal/
  26. thermal-engine/
  27. time-services/
  28. usb/
  29. vibrator/
  30. vndk/
  31. voice_processing/
  32. vr/
  33. aanc_tuning_mixer.txt
  34. Android.bp
  35. Android.mk
  36. AndroidProducts.mk
  37. aosp_marlin.mk
  38. aosp_marlin_svelte.mk
  39. aosp_sailfish.mk
  40. apns-full-conf.xml
  41. audio_effects.conf
  42. audio_output_policy.conf
  43. audio_platform_info.xml
  44. audio_platform_info_tasha_t50.xml
  45. audio_policy_configuration.xml
  46. audio_policy_volumes_drc.xml
  47. charger.fstab.qcom
  48. CleanSpec.mk
  49. compatibility_matrix.xml
  50. default-permissions.xml
  51. device-common.mk
  52. device-marlin.mk
  53. device-sailfish.mk
  54. egl.cfg
  55. fstab.aosp_svelte
  56. fstab.common
  57. gpio-keys.kl
  58. gps.conf
  59. init.common.diag.rc.user
  60. init.common.diag.rc.userdebug
  61. init.common.nanohub.rc
  62. init.common.rc
  63. init.common.usb.rc
  64. init.foreground.sh
  65. init.mid.sh
  66. init.power.sh
  67. init.qcom.devstart.sh
  68. init.qcom.qseecomd.sh
  69. init.radio.sh
  70. init.recovery.common.rc
  71. manifest.xml
  72. media_codecs.xml
  73. media_codecs_performance.xml
  74. media_profiles_V1_0.xml
  75. mixer_paths.xml
  76. mixer_paths_tasha_t50.xml
  77. msm_irqbalance.conf
  78. p2p_supplicant_overlay.conf
  79. preloads_copy.sh
  80. qpnp_pon.kl
  81. qti_whitelist.xml
  82. recovery.wipe.common
  83. sec_config
  84. sound_trigger_mixer_paths.xml
  85. sound_trigger_mixer_paths_tasha_t50.xml
  86. sound_trigger_platform_info.xml
  87. spn-conf.xml
  88. synaptics_dsx.kl
  89. synaptics_dsxv26.idc
  90. synaptics_rmi4_i2c.kl
  91. system.prop
  92. thermal-engine-marlin-vr.conf
  93. thermal-engine-marlin.conf
  94. ueventd.common.rc
  95. uinput-fpc.idc
  96. uinput-fpc.kl
  97. vendorsetup.sh
  98. vold.fstab
  99. vr-virtual-touchpad-1.idc
  100. WCNSS_cfg.dat
  101. WCNSS_qcom_cfg.ini
  102. WCNSS_qcom_wlan_nv.bin
  103. wpa_supplicant_overlay.conf
  104. wpa_supplicant_wcn.conf