Re: [PATCH] mm, vmpressure: Fix a signedness bug in vmpressure_register_event()

From: Andrew Morton
Date: Sat Sep 28 2019 - 18:04:35 EST


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;
_