If the number of items to process in the request is zero, we can forgo duplicating, sorting the request and feeding it into the kernel and instead report success immediately. This prevents a NULL dereference of the sorted->items for the no-op request.
Fixes: ed44e0b9585c563905447eceed12af9c1c7ca8d4 Signed-off-by: Chris Wilson chris@chris-wilson.co.uk Cc: Ville Syrjälä ville.syrjala@linux.intel.com Cc: Rob Clark robclark@freedesktop.org Cc: Daniel Stone daniels@collabora.com Cc: Emil Velikov emil.l.velikov@gmail.com --- xf86drmMode.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/xf86drmMode.c b/xf86drmMode.c index 529429e..fa21986 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -1289,7 +1289,7 @@ static int sort_req_list(const void *misc, const void *other) int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, uint32_t flags, void *user_data) { - drmModeAtomicReqPtr sorted = drmModeAtomicDuplicate(req); + drmModeAtomicReqPtr sorted; struct drm_mode_atomic atomic; uint32_t *objs_ptr = NULL; uint32_t *count_props_ptr = NULL; @@ -1300,7 +1300,11 @@ int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, uint32_t flags, int obj_idx = -1; int ret = -1;
- if (!sorted) + if (req->cursor == 0) + return 0; + + sorted = drmModeAtomicDuplicate(req); + if (sorted == NULL) return -ENOMEM;
memclear(atomic);
On 21 July 2015 at 13:50, Chris Wilson chris@chris-wilson.co.uk wrote:
If the number of items to process in the request is zero, we can forgo duplicating, sorting the request and feeding it into the kernel and instead report success immediately. This prevents a NULL dereference of the sorted->items for the no-op request.
Why do you attempt a null/empty commit :P But seriously, nicely caught !
Reviewed-by: Emil Velikov emil.l.velikov@gmail.com
-Emil
On Tue, Jul 28, 2015 at 02:42:49PM +0100, Emil Velikov wrote:
On 21 July 2015 at 13:50, Chris Wilson chris@chris-wilson.co.uk wrote:
If the number of items to process in the request is zero, we can forgo duplicating, sorting the request and feeding it into the kernel and instead report success immediately. This prevents a NULL dereference of the sorted->items for the no-op request.
Why do you attempt a null/empty commit :P But seriously, nicely caught !
Nah, it was a silly static analysis tool that one time told the truth.
Pushed, 293f8fa..1a6efaf 1a6efaf68e207302cd9423051b8091fa663bbabe -> master -Chris
dri-devel@lists.freedesktop.org