Skip to content

Commit 9bfc7b9

Browse files
Alexey Dobriyandavem330
authored andcommitted
netns: add dummy struct inside "struct net_generic"
This is precursor to fixing "[id - 1]" bloat inside net_generic(). Name "s" is chosen to complement name "u" often used for dummy unions. Signed-off-by: Alexey Dobriyan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1a9a059 commit 9bfc7b9

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

include/net/netns/generic.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@
2525
*/
2626

2727
struct net_generic {
28-
unsigned int len;
29-
struct rcu_head rcu;
28+
struct {
29+
unsigned int len;
30+
struct rcu_head rcu;
31+
} s;
3032

3133
void *ptr[0];
3234
};

net/core/net_namespace.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ static struct net_generic *net_alloc_generic(void)
5050

5151
ng = kzalloc(generic_size, GFP_KERNEL);
5252
if (ng)
53-
ng->len = max_gen_ptrs;
53+
ng->s.len = max_gen_ptrs;
5454

5555
return ng;
5656
}
@@ -64,7 +64,7 @@ static int net_assign_generic(struct net *net, unsigned int id, void *data)
6464

6565
old_ng = rcu_dereference_protected(net->gen,
6666
lockdep_is_held(&net_mutex));
67-
if (old_ng->len >= id) {
67+
if (old_ng->s.len >= id) {
6868
old_ng->ptr[id - 1] = data;
6969
return 0;
7070
}
@@ -84,11 +84,11 @@ static int net_assign_generic(struct net *net, unsigned int id, void *data)
8484
* the old copy for kfree after a grace period.
8585
*/
8686

87-
memcpy(&ng->ptr, &old_ng->ptr, old_ng->len * sizeof(void*));
87+
memcpy(&ng->ptr, &old_ng->ptr, old_ng->s.len * sizeof(void*));
8888
ng->ptr[id - 1] = data;
8989

9090
rcu_assign_pointer(net->gen, ng);
91-
kfree_rcu(old_ng, rcu);
91+
kfree_rcu(old_ng, s.rcu);
9292
return 0;
9393
}
9494

0 commit comments

Comments
 (0)