diff options
| author | Tejun Heo <tj@kernel.org> | 2015-12-07 10:09:03 -0500 | 
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2015-12-07 10:09:03 -0500 | 
| commit | 0b98f0c04245877ae0b625a7f0aa55b8ff98e0c4 (patch) | |
| tree | 486ebe0d76217a4f7781e28fbd96facb0b66f9da /include/linux/net.h | |
| parent | 67cde9c4938945b9510730c64e68d2f1dd7bc0aa (diff) | |
| parent | 527e9316f8ec44bd53d90fb9f611fa7ffff52bb9 (diff) | |
Merge branch 'master' into for-4.4-fixes
The following commit which went into mainline through networking tree
  3b13758f51de ("cgroups: Allow dynamically changing net_classid")
conflicts in net/core/netclassid_cgroup.c with the following pending
fix in cgroup/for-4.4-fixes.
  1f7dd3e5a6e4 ("cgroup: fix handling of multi-destination migration from subtree_control enabling")
The former separates out update_classid() from cgrp_attach() and
updates it to walk all fds of all tasks in the target css so that it
can be used from both migration and config change paths.  The latter
drops @css from cgrp_attach().
Resolve the conflict by making cgrp_attach() call update_classid()
with the css from the first task.  We can revive @tset walking in
cgrp_attach() but given that net_cls is v1 only where there always is
only one target css during migration, this is fine.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Nina Schiff <ninasc@fb.com>
Diffstat (limited to 'include/linux/net.h')
| -rw-r--r-- | include/linux/net.h | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/net.h b/include/linux/net.h index 70ac5e28e6b7..0b4ac7da583a 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -34,8 +34,12 @@ struct inode;  struct file;  struct net; -#define SOCK_ASYNC_NOSPACE	0 -#define SOCK_ASYNC_WAITDATA	1 +/* Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located + * in sock->flags, but moved into sk->sk_wq->flags to be RCU protected. + * Eventually all flags will be in sk->sk_wq_flags. + */ +#define SOCKWQ_ASYNC_NOSPACE	0 +#define SOCKWQ_ASYNC_WAITDATA	1  #define SOCK_NOSPACE		2  #define SOCK_PASSCRED		3  #define SOCK_PASSSEC		4 @@ -89,6 +93,7 @@ struct socket_wq {  	/* Note: wait MUST be first field of socket_wq */  	wait_queue_head_t	wait;  	struct fasync_struct	*fasync_list; +	unsigned long		flags; /* %SOCKWQ_ASYNC_NOSPACE, etc */  	struct rcu_head		rcu;  } ____cacheline_aligned_in_smp; @@ -96,7 +101,7 @@ struct socket_wq {   *  struct socket - general BSD socket   *  @state: socket state (%SS_CONNECTED, etc)   *  @type: socket type (%SOCK_STREAM, etc) - *  @flags: socket flags (%SOCK_ASYNC_NOSPACE, etc) + *  @flags: socket flags (%SOCK_NOSPACE, etc)   *  @ops: protocol specific socket operations   *  @file: File back pointer for gc   *  @sk: internal networking protocol agnostic socket representation @@ -202,7 +207,7 @@ enum {  	SOCK_WAKE_URG,  }; -int sock_wake_async(struct socket *sk, int how, int band); +int sock_wake_async(struct socket_wq *sk_wq, int how, int band);  int sock_register(const struct net_proto_family *fam);  void sock_unregister(int family);  int __sock_create(struct net *net, int family, int type, int proto,  | 
