Re: [PATCH 2/2] vmalloc: Account memcg per vmalloc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 11, 2024 at 04:32:50AM +0000, Matthew Wilcox (Oracle) wrote:
[...]
> +int obj_cgroup_charge_vmalloc(struct obj_cgroup **objcgp,
> +		unsigned int nr_pages, gfp_t gfp)
> +{
> +	struct obj_cgroup *objcg;
> +	int err;
> +
> +	if (mem_cgroup_disabled() || !(gfp & __GFP_ACCOUNT))
> +		return 0;
> +
> +	objcg = current_obj_cgroup();
> +	if (!objcg)
> +		return 0;
> +
> +	err = obj_cgroup_charge_pages(objcg, gfp, nr_pages);
> +	if (err)
> +		return err;
> +	obj_cgroup_get(objcg);
> +	mod_memcg_state(obj_cgroup_memcg(objcg), MEMCG_VMALLOC, nr_pages);

obj_cgroup_memcg() needs to be within rcu. See MEMCG_PERCPU_B as an
example.

> +	*objcgp = objcg;
> +
> +	return 0;
> +}
> +
> +/**
> + * obj_cgroup_uncharge_vmalloc - Uncharge vmalloc memory
> + * @objcg: The object cgroup
> + * @nr_pages: Number of pages
> + */
> +void obj_cgroup_uncharge_vmalloc(struct obj_cgroup *objcg,
> +		unsigned int nr_pages)
> +{
> +	if (!objcg)
> +		return;
> +	mod_memcg_state(objcg->memcg, MEMCG_VMALLOC, 0L - nr_pages);

Please use obj_cgroup_memcg() above instead of objcg->memcg and within
rcu lock.

Overall the patch looks good.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux