diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/appletalk/dev.c | 22 | ||||
-rw-r--r-- | net/core/sock.c | 12 | ||||
-rw-r--r-- | net/decnet/dn_dev.c | 2 | ||||
-rw-r--r-- | net/ipv4/multipath_wrandom.c | 6 |
4 files changed, 32 insertions, 10 deletions
diff --git a/net/appletalk/dev.c b/net/appletalk/dev.c index 76598445d84b..1237e208e246 100644 --- a/net/appletalk/dev.c +++ b/net/appletalk/dev.c | |||
@@ -19,7 +19,7 @@ static int ltalk_mac_addr(struct net_device *dev, void *addr) | |||
19 | return -EINVAL; | 19 | return -EINVAL; |
20 | } | 20 | } |
21 | 21 | ||
22 | void ltalk_setup(struct net_device *dev) | 22 | static void ltalk_setup(struct net_device *dev) |
23 | { | 23 | { |
24 | /* Fill in the fields of the device structure with localtalk-generic values. */ | 24 | /* Fill in the fields of the device structure with localtalk-generic values. */ |
25 | 25 | ||
@@ -40,4 +40,22 @@ void ltalk_setup(struct net_device *dev) | |||
40 | 40 | ||
41 | dev->flags = IFF_BROADCAST|IFF_MULTICAST|IFF_NOARP; | 41 | dev->flags = IFF_BROADCAST|IFF_MULTICAST|IFF_NOARP; |
42 | } | 42 | } |
43 | EXPORT_SYMBOL(ltalk_setup); | 43 | |
44 | /** | ||
45 | * alloc_ltalkdev - Allocates and sets up an localtalk device | ||
46 | * @sizeof_priv: Size of additional driver-private structure to be allocated | ||
47 | * for this localtalk device | ||
48 | * | ||
49 | * Fill in the fields of the device structure with localtalk-generic | ||
50 | * values. Basically does everything except registering the device. | ||
51 | * | ||
52 | * Constructs a new net device, complete with a private data area of | ||
53 | * size @sizeof_priv. A 32-byte (not bit) alignment is enforced for | ||
54 | * this private data area. | ||
55 | */ | ||
56 | |||
57 | struct net_device *alloc_ltalkdev(int sizeof_priv) | ||
58 | { | ||
59 | return alloc_netdev(sizeof_priv, "lt%d", ltalk_setup); | ||
60 | } | ||
61 | EXPORT_SYMBOL(alloc_ltalkdev); | ||
diff --git a/net/core/sock.c b/net/core/sock.c index 98171ddd7e7d..92c0676e4708 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -635,7 +635,11 @@ struct sock *sk_alloc(int family, int priority, struct proto *prot, int zero_it) | |||
635 | if (zero_it) { | 635 | if (zero_it) { |
636 | memset(sk, 0, prot->obj_size); | 636 | memset(sk, 0, prot->obj_size); |
637 | sk->sk_family = family; | 637 | sk->sk_family = family; |
638 | sk->sk_prot = prot; | 638 | /* |
639 | * See comment in struct sock definition to understand | ||
640 | * why we need sk_prot_creator -acme | ||
641 | */ | ||
642 | sk->sk_prot = sk->sk_prot_creator = prot; | ||
639 | sock_lock_init(sk); | 643 | sock_lock_init(sk); |
640 | } | 644 | } |
641 | 645 | ||
@@ -654,7 +658,7 @@ struct sock *sk_alloc(int family, int priority, struct proto *prot, int zero_it) | |||
654 | void sk_free(struct sock *sk) | 658 | void sk_free(struct sock *sk) |
655 | { | 659 | { |
656 | struct sk_filter *filter; | 660 | struct sk_filter *filter; |
657 | struct module *owner = sk->sk_prot->owner; | 661 | struct module *owner = sk->sk_prot_creator->owner; |
658 | 662 | ||
659 | if (sk->sk_destruct) | 663 | if (sk->sk_destruct) |
660 | sk->sk_destruct(sk); | 664 | sk->sk_destruct(sk); |
@@ -672,8 +676,8 @@ void sk_free(struct sock *sk) | |||
672 | __FUNCTION__, atomic_read(&sk->sk_omem_alloc)); | 676 | __FUNCTION__, atomic_read(&sk->sk_omem_alloc)); |
673 | 677 | ||
674 | security_sk_free(sk); | 678 | security_sk_free(sk); |
675 | if (sk->sk_prot->slab != NULL) | 679 | if (sk->sk_prot_creator->slab != NULL) |
676 | kmem_cache_free(sk->sk_prot->slab, sk); | 680 | kmem_cache_free(sk->sk_prot_creator->slab, sk); |
677 | else | 681 | else |
678 | kfree(sk); | 682 | kfree(sk); |
679 | module_put(owner); | 683 | module_put(owner); |
diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c index e6e23eb14428..ee7bf46eb78a 100644 --- a/net/decnet/dn_dev.c +++ b/net/decnet/dn_dev.c | |||
@@ -1426,7 +1426,7 @@ static struct rtnetlink_link dnet_rtnetlink_table[RTM_NR_MSGTYPES] = | |||
1426 | [RTM_GETRULE - RTM_BASE] = { .dumpit = dn_fib_dump_rules, }, | 1426 | [RTM_GETRULE - RTM_BASE] = { .dumpit = dn_fib_dump_rules, }, |
1427 | #else | 1427 | #else |
1428 | [RTM_GETROUTE - RTM_BASE] = { .doit = dn_cache_getroute, | 1428 | [RTM_GETROUTE - RTM_BASE] = { .doit = dn_cache_getroute, |
1429 | .dumpit = dn_cache_dump, | 1429 | .dumpit = dn_cache_dump, }, |
1430 | #endif | 1430 | #endif |
1431 | 1431 | ||
1432 | }; | 1432 | }; |
diff --git a/net/ipv4/multipath_wrandom.c b/net/ipv4/multipath_wrandom.c index 10b23e1bece6..c3d2ca1a6781 100644 --- a/net/ipv4/multipath_wrandom.c +++ b/net/ipv4/multipath_wrandom.c | |||
@@ -172,7 +172,7 @@ static void wrandom_select_route(const struct flowi *flp, | |||
172 | multipath_comparekeys(&rt->fl, flp)) { | 172 | multipath_comparekeys(&rt->fl, flp)) { |
173 | struct multipath_candidate* mpc = | 173 | struct multipath_candidate* mpc = |
174 | (struct multipath_candidate*) | 174 | (struct multipath_candidate*) |
175 | kmalloc(size_mpc, GFP_KERNEL); | 175 | kmalloc(size_mpc, GFP_ATOMIC); |
176 | 176 | ||
177 | if (!mpc) | 177 | if (!mpc) |
178 | return; | 178 | return; |
@@ -244,7 +244,7 @@ static void wrandom_set_nhinfo(__u32 network, | |||
244 | if (!target_route) { | 244 | if (!target_route) { |
245 | const size_t size_rt = sizeof(struct multipath_route); | 245 | const size_t size_rt = sizeof(struct multipath_route); |
246 | target_route = (struct multipath_route *) | 246 | target_route = (struct multipath_route *) |
247 | kmalloc(size_rt, GFP_KERNEL); | 247 | kmalloc(size_rt, GFP_ATOMIC); |
248 | 248 | ||
249 | target_route->gw = nh->nh_gw; | 249 | target_route->gw = nh->nh_gw; |
250 | target_route->oif = nh->nh_oif; | 250 | target_route->oif = nh->nh_oif; |
@@ -265,7 +265,7 @@ static void wrandom_set_nhinfo(__u32 network, | |||
265 | if (!target_dest) { | 265 | if (!target_dest) { |
266 | const size_t size_dst = sizeof(struct multipath_dest); | 266 | const size_t size_dst = sizeof(struct multipath_dest); |
267 | target_dest = (struct multipath_dest*) | 267 | target_dest = (struct multipath_dest*) |
268 | kmalloc(size_dst, GFP_KERNEL); | 268 | kmalloc(size_dst, GFP_ATOMIC); |
269 | 269 | ||
270 | target_dest->nh_info = nh; | 270 | target_dest->nh_info = nh; |
271 | target_dest->network = network; | 271 | target_dest->network = network; |