Messages in this thread | | | Date | Wed, 20 Feb 2013 13:43:46 -0800 | From | Tejun Heo <> | Subject | Re: [PATCH] posix-timer: don't call idr_find() w/ negative ID |
| |
Hey, Thomas.
On Wed, Feb 20, 2013 at 10:38:36PM +0100, Thomas Gleixner wrote: > I can grumpily accept the patch below as a quick hack fix, which can > go to stable as well, but not with such a patently misleading > changelog. > > The changelog wants to document, that this is not a proper fix at all > and just a quick hack which can be nonintrusively applied to stable.
I'm not sure about what type timer_t can be but if it can actually be u64 as Andrew suggests, we probably want a different test guarding it.
> > Note that the previous code was theoretically broken. idr_find() > > masked off the sign bit before performing lookup and if the matching > > IDs were in use, it would have returned pointer for the incorrect > > entry. > > Brilliant code that. What's the purpose of having the idr id as an > "int" and then masking off the sign bit instead of simply refusing > negative id values in the idr code itself or simply making the id > "unsigned int" ?
Beats me. The code has been like that since the beginning. One of the many oddities of idr implementation. Patch to remove MAX_IDR_MASK is already queued in -mm w/ other idr updates.
Thanks.
-- tejun
| |