]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/komeda: Handle NULL pointer access code path in error case
authorCarsten Haitzler <carsten.haitzler@arm.com>
Fri, 27 Nov 2020 11:00:54 +0000 (11:00 +0000)
committerLiviu Dudau <liviu.dudau@arm.com>
Fri, 18 Dec 2020 16:35:53 +0000 (16:35 +0000)
komeda_component_get_old_state() technically can return a NULL
pointer. komeda_compiz_set_input() even warns when this happens, but
then proceeeds to use that NULL pointer to compare memory content there
agains the new state to see if it changed. In this case, it's better to
assume that the input changed as there is no old state to compare
against and thus assume the changes happen anyway.

Signed-off-by: Carsten Haitzler <carsten.haitzler@arm.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
[Applied small spelling fixes and fix suggested by Steven Price]
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201127110054.133686-1-carsten.haitzler@foss.arm.com
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c

index 8f32ae7c25d069a69a5686d565a97872c4619772..5c085116de3f84976bd9f5b570e710f661222547 100644 (file)
@@ -704,10 +704,10 @@ komeda_compiz_set_input(struct komeda_compiz *compiz,
        cin->layer_alpha = dflow->layer_alpha;
 
        old_st = komeda_component_get_old_state(&compiz->base, drm_st);
-       WARN_ON(!old_st);
 
        /* compare with old to check if this input has been changed */
-       if (memcmp(&(to_compiz_st(old_st)->cins[idx]), cin, sizeof(*cin)))
+       if (WARN_ON(!old_st) ||
+           memcmp(&(to_compiz_st(old_st)->cins[idx]), cin, sizeof(*cin)))
                c_st->changed_active_inputs |= BIT(idx);
 
        komeda_component_add_input(c_st, &dflow->input, idx);