lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20091102134630.9947e8cf.rdunlap@xenotime.net>
Date:	Mon, 2 Nov 2009 13:46:30 -0800
From:	Randy Dunlap <rdunlap@...otime.net>
To:	Ben Blum <bblum@...rew.cmu.edu>, netdev <netdev@...r.kernel.org>
Cc:	linux-kernel@...r.kernel.org,
	containers@...ts.linux-foundation.org, lizf@...fujistu.com,
	akpm@...ux-foundation.org, menage@...gle.com
Subject: Re: [RFC][PATCH 3/3] cgroups: net_cls subsys as module

On Mon, 2 Nov 2009 16:31:03 -0500 Ben Blum wrote:

> Allows the net_cls cgroup subsystem to be compiled as a module

Please cc: netdev on networking patches.  [done]


> From: Ben Blum <bblum@...rew.cmu.edu>
> 
> This patch modifies net/sched/cls_cgroup.c to allow the net_cls subsystem to
> be optionally compiled as a module instead of builtin. The cgroup_subsys
> struct is moved around a bit to allow the subsys_id to be either declared as a
> compile-time constant by the cgroup_subsys.h include in cgroup.h, or, if it's
> a module, initialized within the struct by cgroup_load_subsys.
> 
> Signed-off-by: Ben Blum <bblum@...rew.cmu.edu>
> ---
> 
>  net/sched/Kconfig      |    2 +-
>  net/sched/cls_cgroup.c |   37 ++++++++++++++++++++++++++++---------
>  2 files changed, 29 insertions(+), 10 deletions(-)
> 
> 
> diff --git a/net/sched/Kconfig b/net/sched/Kconfig
> index 929218a..8489951 100644
> --- a/net/sched/Kconfig
> +++ b/net/sched/Kconfig
> @@ -328,7 +328,7 @@ config NET_CLS_FLOW
>  	  module will be called cls_flow.
>  
>  config NET_CLS_CGROUP
> -	bool "Control Group Classifier"
> +	tristate "Control Group Classifier"
>  	select NET_CLS
>  	depends on CGROUPS
>  	---help---
> diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c
> index e4877ca..df9723b 100644
> --- a/net/sched/cls_cgroup.c
> +++ b/net/sched/cls_cgroup.c
> @@ -24,6 +24,25 @@ struct cgroup_cls_state
>  	u32 classid;
>  };
>  
> +static struct cgroup_subsys_state *cgrp_create(struct cgroup_subsys *ss,
> +					       struct cgroup *cgrp);
> +static void cgrp_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp);
> +static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp);
> +
> +struct cgroup_subsys net_cls_subsys = {
> +	.name		= "net_cls",
> +	.create		= cgrp_create,
> +	.destroy	= cgrp_destroy,
> +	.populate	= cgrp_populate,
> +#ifdef CONFIG_NET_CLS_CGROUP
> +	.subsys_id	= net_cls_subsys_id,
> +#else
> +#define net_cls_subsys_id net_cls_subsys.subsys_id
> +#endif
> +	.module		= THIS_MODULE,
> +};
> +
> +
>  static inline struct cgroup_cls_state *cgrp_cls_state(struct cgroup *cgrp)
>  {
>  	return container_of(cgroup_subsys_state(cgrp, net_cls_subsys_id),
> @@ -79,14 +98,6 @@ static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
>  	return cgroup_add_files(cgrp, ss, ss_files, ARRAY_SIZE(ss_files));
>  }
>  
> -struct cgroup_subsys net_cls_subsys = {
> -	.name		= "net_cls",
> -	.create		= cgrp_create,
> -	.destroy	= cgrp_destroy,
> -	.populate	= cgrp_populate,
> -	.subsys_id	= net_cls_subsys_id,
> -};
> -
>  struct cls_cgroup_head
>  {
>  	u32			handle;
> @@ -277,12 +288,20 @@ static struct tcf_proto_ops cls_cgroup_ops __read_mostly = {
>  
>  static int __init init_cgroup_cls(void)
>  {
> -	return register_tcf_proto_ops(&cls_cgroup_ops);
> +	int ret = register_tcf_proto_ops(&cls_cgroup_ops);
> +	if (ret)
> +		return ret;
> +	ret = cgroup_load_subsys(&net_cls_subsys);
> +	if (ret)
> +		unregister_tcf_proto_ops(&cls_cgroup_ops);
> +	return ret;
>  }
>  
>  static void __exit exit_cgroup_cls(void)
>  {
>  	unregister_tcf_proto_ops(&cls_cgroup_ops);
> +	/* TODO: unload subsystem. for now, the try_module_get in load_subsys
> +	 * prevents us from getting here. */
>  }
>  
>  module_init(init_cgroup_cls);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


---
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ