On Thu 20-06-13 11:17:39, Hyunhee Kim wrote: [...] > diff --git a/mm/vmpressure.c b/mm/vmpressure.c > index 736a601..3c37b12 100644 > --- a/mm/vmpressure.c > +++ b/mm/vmpressure.c [...] > @@ -303,10 +310,19 @@ int vmpressure_register_event(struct cgroup *cg, struct cftype *cft, > { > struct vmpressure *vmpr = cg_to_vmpressure(cg); > struct vmpressure_event *ev; > + char *strlevel = NULL, *strtrigger = NULL; No need for initialization to NULL when both would be initialized below. > int level; > > + strlevel = args; > + strtrigger = strchr(args, ' '); > + > + if (strtrigger) { > + *strtrigger = '\0'; > + strtrigger++; > + } > + > for (level = 0; level < VMPRESSURE_NUM_LEVELS; level++) { > - if (!strcmp(vmpressure_str_levels[level], args)) > + if (!strcmp(vmpressure_str_levels[level], strlevel)) > break; > } > > @@ -319,6 +335,16 @@ int vmpressure_register_event(struct cgroup *cg, struct cftype *cft, > > ev->efd = eventfd; > ev->level = level; > + ev->last_level = -1; > + > + if (strtrigger == NULL) > + ev->edge_trigger = false; > + else if (!strcmp(strtrigger, "always")) > + ev->edge_trigger = false; > + else if (!strcmp(strtrigger, "edge")) > + ev->edge_trigger = true; > + else > + return -EINVAL; I have missed this before but this will cause a memory leak and worse it is user controlled mem leak. Move this up after the level check. > mutex_lock(&vmpr->events_lock); > list_add(&ev->node, &vmpr->events); > -- > 1.7.9.5 > > > -- > 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> -- Michal Hocko SUSE Labs -- 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>