Re: [PATCH] idr: remove WARN_ON_ONCE() when trying to replace negative ID

From: Tejun Heo
Date: Thu Sep 07 2017 - 16:39:18 EST


On Wed, Sep 06, 2017 at 04:53:06PM -0700, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@xxxxxxxxxx>
>
> IDR only supports non-negative IDs. There used to be a
> 'WARN_ON_ONCE(id < 0)' in idr_replace(), but it was intentionally
> removed by commit 2e1c9b286765 ("idr: remove WARN_ON_ONCE() on negative
> IDs"). Then it was added back by commit 0a835c4f090a ("Reimplement IDR
> and IDA using the radix tree"). However it seems that adding it back
> was a mistake, given that some users such as drm_gem_handle_delete()
> (DRM_IOCTL_GEM_CLOSE) pass in a value from userspace to idr_replace(),
> allowing the WARN_ON_ONCE to be triggered. drm_gem_handle_delete()
> actually just wants idr_replace() to return an error code if the ID is
> not allocated, including in the case where the ID is invalid (negative).

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

Thanks.

--
tejun