@@ -196,6 +196,22 @@ int drm_writeback_connector_init(struct drm_device *dev,
196196}
197197EXPORT_SYMBOL (drm_writeback_connector_init );
198198
199+ static void delete_writeback_properties (struct drm_device * dev )
200+ {
201+ if (dev -> mode_config .writeback_pixel_formats_property ) {
202+ drm_property_destroy (dev , dev -> mode_config .writeback_pixel_formats_property );
203+ dev -> mode_config .writeback_pixel_formats_property = NULL ;
204+ }
205+ if (dev -> mode_config .writeback_out_fence_ptr_property ) {
206+ drm_property_destroy (dev , dev -> mode_config .writeback_out_fence_ptr_property );
207+ dev -> mode_config .writeback_out_fence_ptr_property = NULL ;
208+ }
209+ if (dev -> mode_config .writeback_fb_id_property ) {
210+ drm_property_destroy (dev , dev -> mode_config .writeback_fb_id_property );
211+ dev -> mode_config .writeback_fb_id_property = NULL ;
212+ }
213+ }
214+
199215/**
200216 * drm_writeback_connector_init_with_encoder - Initialize a writeback connector with
201217 * a custom encoder
@@ -231,18 +247,20 @@ static int __drm_writeback_connector_init(struct drm_device *dev,
231247 int ret = create_writeback_properties (dev );
232248
233249 if (ret != 0 )
234- return ret ;
250+ goto failed_properties ;
235251
236252 connector -> interlace_allowed = 0 ;
237253
238254 ret = drm_connector_attach_encoder (connector , enc );
239255 if (ret )
240- return ret ;
256+ goto failed_properties ;
241257
242258 blob = drm_property_create_blob (dev , n_formats * sizeof (* formats ),
243259 formats );
244- if (IS_ERR (blob ))
245- return PTR_ERR (blob );
260+ if (IS_ERR (blob )) {
261+ ret = PTR_ERR (blob );
262+ goto failed_properties ;
263+ }
246264
247265 INIT_LIST_HEAD (& wb_connector -> job_queue );
248266 spin_lock_init (& wb_connector -> job_lock );
@@ -265,6 +283,9 @@ static int __drm_writeback_connector_init(struct drm_device *dev,
265283 wb_connector -> pixel_formats_blob_ptr = blob ;
266284
267285 return 0 ;
286+ failed_properties :
287+ delete_writeback_properties (dev );
288+ return ret ;
268289}
269290
270291/**
0 commit comments