drm/vkms: Fix plane duplicate_state
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 28 Nov 2018 10:10:33 +0000 (11:10 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 29 Nov 2018 09:30:39 +0000 (10:30 +0100)
We need to handle allocation failures and bail out. While at it, tune
the allocation failures down to debug level.

syzbot injected an allocation failure and then hit this WARN_ON.

Reported-by: syzbot+eb6e5365f23c02517dda@syzkaller.appspotmail.com
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
Cc: Gustavo Padovan <gustavo.padovan@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20181128101033.4840-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/vkms/vkms_plane.c

index 7041007396ae8830094357f6baf0d0f8db0f4c3d..e3bcea4b4891d758a30c54e3b208e8e8da2362c4 100644 (file)
@@ -23,8 +23,11 @@ vkms_plane_duplicate_state(struct drm_plane *plane)
                return NULL;
 
        crc_data = kzalloc(sizeof(*crc_data), GFP_KERNEL);
-       if (WARN_ON(!crc_data))
-               DRM_INFO("Couldn't allocate crc_data");
+       if (!crc_data) {
+               DRM_DEBUG_KMS("Couldn't allocate crc_data\n");
+               kfree(vkms_state);
+               return NULL;
+       }
 
        vkms_state->crc_data = crc_data;