hwc2: Return an error for a zero acquire fence
Prevent an acquire fence of value 0 from being programmed into
the layer stack.
Change-Id: I0e2a0ba622c61c105bbe44ffa9ca986388e8557f
CRs-fixed: 1025574
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 8237882..f9cb466 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -618,6 +618,12 @@
if (target == nullptr) {
return HWC2::Error::None;
}
+
+ if (acquire_fence == 0) {
+ DLOGE("acquire_fence is zero");
+ return HWC2::Error::BadParameter;
+ }
+
client_target_->SetLayerBuffer(target, acquire_fence);
client_target_->SetLayerSurfaceDamage(damage);
// Ignoring dataspace for now
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index f5bc6e5..9516189 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -58,6 +58,11 @@
return HWC2::Error::BadParameter;
}
+ if (acquire_fence == 0) {
+ DLOGE("acquire_fence is zero");
+ return HWC2::Error::BadParameter;
+ }
+
const private_handle_t *handle = static_cast<const private_handle_t *>(buffer);
LayerBuffer *layer_buffer = layer_->input_buffer;
layer_buffer->width = UINT32(handle->width);