Camera: Mark unchanged streams as reconfigured to clear buffer caches

- During stream configuration, unchanged streams are not flagged
as reconfigured. This prevents onStreamReConfigured from being called
which is responsible for clearing buffer caches. If stream
configuration happens before a buffer's on freed sequence is complete,
the buffer cache for that stream remains uncleared. This can result
in a hwasan error due to attempts to access the stale buffer.

Test: Partner verified; CTS camera test
Bug: 341740105
Flag: com.android.internal.camera.flags.enable_stream_reconfiguration_for_unchanged_streams
Change-Id: I8953eae6c814a034dcdb21c63fa8b255e6b0d1ac
diff --git a/camera/camera_platform.aconfig b/camera/camera_platform.aconfig
index 7092af6..c2e6bab 100644
--- a/camera/camera_platform.aconfig
+++ b/camera/camera_platform.aconfig
@@ -243,3 +243,10 @@
     description: "Enable CameraServiceWatchdog to abort camera HAL to generate HAL tombstones"
     bug: "349652177"
 }
+
+flag {
+    namespace: "camera_platform"
+    name: "enable_stream_reconfiguration_for_unchanged_streams"
+    description: "Enable stream reconfiguration for unchanged streams"
+    bug: "341740105"
+}
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.cpp b/services/camera/libcameraservice/device3/Camera3Stream.cpp
index 4934203..ceb3d30 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Stream.cpp
@@ -29,6 +29,9 @@
 #include "ui/GraphicBufferMapper.h"
 
 #include <cutils/properties.h>
+#include <com_android_internal_camera_flags.h>
+
+namespace flags = com::android::internal::camera::flags;
 
 namespace android {
 
@@ -388,6 +391,10 @@
             mOldDataSpace == camera_stream::data_space &&
             mOldFormat == camera_stream::format) {
         mState = STATE_CONFIGURED;
+        if (flags::enable_stream_reconfiguration_for_unchanged_streams()
+                && streamReconfigured != nullptr) {
+            *streamReconfigured = true;
+        }
         return OK;
     }