drm/ssd130x: Allocate buffer in the plane's .atomic_check() callback
authorJavier Martinez Canillas <javierm@redhat.com>
Wed, 26 Jul 2023 10:54:28 +0000 (12:54 +0200)
committerJavier Martinez Canillas <javierm@redhat.com>
Wed, 26 Jul 2023 14:33:19 +0000 (16:33 +0200)
commit45b58669e532bcdfd6e1593488d1f23eabd55428
tree1ce1b1e66fc7f1b1d98afe94f8acf12b6eaab0da
parent4cd179a312c60587ab15792f04febae3bed5459b
drm/ssd130x: Allocate buffer in the plane's .atomic_check() callback

Drivers are not allowed to fail after drm_atomic_helper_swap_state() has
been called and the new atomic state is stored into the current sw state.

Since the struct ssd130x_device .data_array is allocated in the encoder's
.atomic_enable callback, the operation can fail and this is after the new
state has been stored. So it can break an atomic mode settings assumption.

Fix this by having custom helpers to allocate, duplicate and destroy the
plane state, that will take care of allocating and freeing these buffers.

Suggested-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230726105433.389740-2-javierm@redhat.com
drivers/gpu/drm/solomon/ssd130x.c
drivers/gpu/drm/solomon/ssd130x.h