We keep incrementing "spec" as we parse the args so we end up calling kfree() on a modified of spec. It probably works or this would have been caught in testing, but it looks weird. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> diff --git a/mm/vmpressure.c b/mm/vmpressure.c index 0781b1363e0a..1225ec5d9596 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c @@ -386,11 +386,11 @@ int vmpressure_register_event(struct mem_cgroup *memcg, struct vmpressure_event *ev; enum vmpressure_modes mode = VMPRESSURE_NO_PASSTHROUGH; enum vmpressure_levels level = -1; - char *spec = NULL; + char *spec, *spec_orig; char *token; int ret = 0; - spec = kzalloc(MAX_VMPRESSURE_ARGS_LEN + 1, GFP_KERNEL); + spec_orig = spec = kzalloc(MAX_VMPRESSURE_ARGS_LEN + 1, GFP_KERNEL); if (!spec) { ret = -ENOMEM; goto out; @@ -429,7 +429,7 @@ int vmpressure_register_event(struct mem_cgroup *memcg, list_add(&ev->node, &vmpr->events); mutex_unlock(&vmpr->events_lock); out: - kfree(spec); + kfree(spec_orig); return ret; } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>