On Sat, 28 Sep 2019 14:47:02 -0700 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > On Sat, Sep 28, 2019 at 02:23:56PM -0700, Andrew Morton wrote: > > How about doing it this way? Only copy the int to the enum once we > > know it's within range? > > This will return a positive integer on success instead of 0. We need: > > mutex_unlock(&vmpr->events_lock); > + ret = 0; > out: > > with that, > > Reviewed-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > > How about further adding ... > > + * Return: 0 on success, -ENOMEM on memory failure or -EINVAL if @args could > + * not be parsed. Cool. --- a/mm/vmpressure.c~mm-vmpressure-fix-a-signedness-bug-in-vmpressure_register_event-fix-fix +++ a/mm/vmpressure.c @@ -355,6 +355,9 @@ void vmpressure_prio(gfp_t gfp, struct m * "hierarchy" or "local"). * * To be used as memcg event method. + * + * Return: 0 on success, -ENOMEM on memory failure or -EINVAL if @args could + * not be parsed. */ int vmpressure_register_event(struct mem_cgroup *memcg, struct eventfd_ctx *eventfd, const char *args) @@ -402,6 +405,7 @@ int vmpressure_register_event(struct mem mutex_lock(&vmpr->events_lock); list_add(&ev->node, &vmpr->events); mutex_unlock(&vmpr->events_lock); + ret = 0; out: kfree(spec_orig); return ret; _