diff --git a/msm/msm_drv.c b/msm/msm_drv.c index 95d08b0baa..5969a941f7 100644 --- a/msm/msm_drv.c +++ b/msm/msm_drv.c @@ -1351,11 +1351,6 @@ static int msm_ioctl_register_event(struct drm_device *dev, void *data, * calls add to client list and return. */ count = msm_event_client_count(dev, req_event, false); - /* Add current client to list */ - spin_lock_irqsave(&dev->event_lock, flag); - list_add_tail(&client->base.link, &priv->client_event_list); - spin_unlock_irqrestore(&dev->event_lock, flag); - if (count) return 0; @@ -1368,6 +1363,11 @@ static int msm_ioctl_register_event(struct drm_device *dev, void *data, list_del(&client->base.link); spin_unlock_irqrestore(&dev->event_lock, flag); kfree(client); + } else { + /* Add current client to list */ + spin_lock_irqsave(&dev->event_lock, flag); + list_add_tail(&client->base.link, &priv->client_event_list); + spin_unlock_irqrestore(&dev->event_lock, flag); } return ret; }