diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-11 22:40:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-11 22:40:14 -0400 |
commit | 038a5008b2f395c85e6e71d6ddf3c684e7c405b0 (patch) | |
tree | 4735eab577e97e5a22c3141e3f60071c8065585e /kernel | |
parent | dd6d1844af33acb4edd0a40b1770d091a22c94be (diff) | |
parent | 266918303226cceac7eca38ced30f15f277bd89c (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (867 commits)
[SKY2]: status polling loop (post merge)
[NET]: Fix NAPI completion handling in some drivers.
[TCP]: Limit processing lost_retrans loop to work-to-do cases
[TCP]: Fix lost_retrans loop vs fastpath problems
[TCP]: No need to re-count fackets_out/sacked_out at RTO
[TCP]: Extract tcp_match_queue_to_sack from sacktag code
[TCP]: Kill almost unused variable pcount from sacktag
[TCP]: Fix mark_head_lost to ignore R-bit when trying to mark L
[TCP]: Add bytes_acked (ABC) clearing to FRTO too
[IPv6]: Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2
[NETFILTER]: x_tables: add missing ip6t_modulename aliases
[NETFILTER]: nf_conntrack_tcp: fix connection reopening
[QETH]: fix qeth_main.c
[NETLINK]: fib_frontend build fixes
[IPv6]: Export userland ND options through netlink (RDNSS support)
[9P]: build fix with !CONFIG_SYSCTL
[NET]: Fix dev_put() and dev_hold() comments
[NET]: make netlink user -> kernel interface synchronious
[NET]: unify netlink kernel socket recognition
[NET]: cleanup 3rd argument in netlink_sendskb
...
Fix up conflicts manually in Documentation/feature-removal-schedule.txt
and my new least favourite crap, the "mod_devicetable" support in the
files include/linux/mod_devicetable.h and scripts/mod/file2alias.c.
(The latter files seem to be explicitly _designed_ to get conflicts when
different subsystems work with them - that have an absolutely horrid
lack of subsystem separation!)
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/audit.c | 16 | ||||
-rw-r--r-- | kernel/fork.c | 3 | ||||
-rw-r--r-- | kernel/hrtimer.c | 24 | ||||
-rw-r--r-- | kernel/nsproxy.c | 15 | ||||
-rw-r--r-- | kernel/softirq.c | 4 |
5 files changed, 43 insertions, 19 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index eb0f9165b401..2924251a6547 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -847,18 +847,10 @@ static void audit_receive_skb(struct sk_buff *skb) | |||
847 | } | 847 | } |
848 | 848 | ||
849 | /* Receive messages from netlink socket. */ | 849 | /* Receive messages from netlink socket. */ |
850 | static void audit_receive(struct sock *sk, int length) | 850 | static void audit_receive(struct sk_buff *skb) |
851 | { | 851 | { |
852 | struct sk_buff *skb; | ||
853 | unsigned int qlen; | ||
854 | |||
855 | mutex_lock(&audit_cmd_mutex); | 852 | mutex_lock(&audit_cmd_mutex); |
856 | 853 | audit_receive_skb(skb); | |
857 | for (qlen = skb_queue_len(&sk->sk_receive_queue); qlen; qlen--) { | ||
858 | skb = skb_dequeue(&sk->sk_receive_queue); | ||
859 | audit_receive_skb(skb); | ||
860 | kfree_skb(skb); | ||
861 | } | ||
862 | mutex_unlock(&audit_cmd_mutex); | 854 | mutex_unlock(&audit_cmd_mutex); |
863 | } | 855 | } |
864 | 856 | ||
@@ -876,8 +868,8 @@ static int __init audit_init(void) | |||
876 | 868 | ||
877 | printk(KERN_INFO "audit: initializing netlink socket (%s)\n", | 869 | printk(KERN_INFO "audit: initializing netlink socket (%s)\n", |
878 | audit_default ? "enabled" : "disabled"); | 870 | audit_default ? "enabled" : "disabled"); |
879 | audit_sock = netlink_kernel_create(NETLINK_AUDIT, 0, audit_receive, | 871 | audit_sock = netlink_kernel_create(&init_net, NETLINK_AUDIT, 0, |
880 | NULL, THIS_MODULE); | 872 | audit_receive, NULL, THIS_MODULE); |
881 | if (!audit_sock) | 873 | if (!audit_sock) |
882 | audit_panic("cannot initialize netlink socket"); | 874 | audit_panic("cannot initialize netlink socket"); |
883 | else | 875 | else |
diff --git a/kernel/fork.c b/kernel/fork.c index 33f12f48684a..5e67f90a1694 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1608,7 +1608,8 @@ asmlinkage long sys_unshare(unsigned long unshare_flags) | |||
1608 | err = -EINVAL; | 1608 | err = -EINVAL; |
1609 | if (unshare_flags & ~(CLONE_THREAD|CLONE_FS|CLONE_NEWNS|CLONE_SIGHAND| | 1609 | if (unshare_flags & ~(CLONE_THREAD|CLONE_FS|CLONE_NEWNS|CLONE_SIGHAND| |
1610 | CLONE_VM|CLONE_FILES|CLONE_SYSVSEM| | 1610 | CLONE_VM|CLONE_FILES|CLONE_SYSVSEM| |
1611 | CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWUSER)) | 1611 | CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWUSER| |
1612 | CLONE_NEWNET)) | ||
1612 | goto bad_unshare_out; | 1613 | goto bad_unshare_out; |
1613 | 1614 | ||
1614 | if ((err = unshare_thread(unshare_flags))) | 1615 | if ((err = unshare_thread(unshare_flags))) |
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index c21ca6bfaa66..dc8a4451d79b 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -277,6 +277,30 @@ ktime_t ktime_add_ns(const ktime_t kt, u64 nsec) | |||
277 | } | 277 | } |
278 | 278 | ||
279 | EXPORT_SYMBOL_GPL(ktime_add_ns); | 279 | EXPORT_SYMBOL_GPL(ktime_add_ns); |
280 | |||
281 | /** | ||
282 | * ktime_sub_ns - Subtract a scalar nanoseconds value from a ktime_t variable | ||
283 | * @kt: minuend | ||
284 | * @nsec: the scalar nsec value to subtract | ||
285 | * | ||
286 | * Returns the subtraction of @nsec from @kt in ktime_t format | ||
287 | */ | ||
288 | ktime_t ktime_sub_ns(const ktime_t kt, u64 nsec) | ||
289 | { | ||
290 | ktime_t tmp; | ||
291 | |||
292 | if (likely(nsec < NSEC_PER_SEC)) { | ||
293 | tmp.tv64 = nsec; | ||
294 | } else { | ||
295 | unsigned long rem = do_div(nsec, NSEC_PER_SEC); | ||
296 | |||
297 | tmp = ktime_set((long)nsec, rem); | ||
298 | } | ||
299 | |||
300 | return ktime_sub(kt, tmp); | ||
301 | } | ||
302 | |||
303 | EXPORT_SYMBOL_GPL(ktime_sub_ns); | ||
280 | # endif /* !CONFIG_KTIME_SCALAR */ | 304 | # endif /* !CONFIG_KTIME_SCALAR */ |
281 | 305 | ||
282 | /* | 306 | /* |
diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c index a4fb7d46971f..f1decd21a534 100644 --- a/kernel/nsproxy.c +++ b/kernel/nsproxy.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/mnt_namespace.h> | 20 | #include <linux/mnt_namespace.h> |
21 | #include <linux/utsname.h> | 21 | #include <linux/utsname.h> |
22 | #include <linux/pid_namespace.h> | 22 | #include <linux/pid_namespace.h> |
23 | #include <net/net_namespace.h> | ||
23 | 24 | ||
24 | static struct kmem_cache *nsproxy_cachep; | 25 | static struct kmem_cache *nsproxy_cachep; |
25 | 26 | ||
@@ -98,8 +99,17 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, | |||
98 | goto out_user; | 99 | goto out_user; |
99 | } | 100 | } |
100 | 101 | ||
102 | new_nsp->net_ns = copy_net_ns(flags, tsk->nsproxy->net_ns); | ||
103 | if (IS_ERR(new_nsp->net_ns)) { | ||
104 | err = PTR_ERR(new_nsp->net_ns); | ||
105 | goto out_net; | ||
106 | } | ||
107 | |||
101 | return new_nsp; | 108 | return new_nsp; |
102 | 109 | ||
110 | out_net: | ||
111 | if (new_nsp->user_ns) | ||
112 | put_user_ns(new_nsp->user_ns); | ||
103 | out_user: | 113 | out_user: |
104 | if (new_nsp->pid_ns) | 114 | if (new_nsp->pid_ns) |
105 | put_pid_ns(new_nsp->pid_ns); | 115 | put_pid_ns(new_nsp->pid_ns); |
@@ -132,7 +142,7 @@ int copy_namespaces(unsigned long flags, struct task_struct *tsk) | |||
132 | 142 | ||
133 | get_nsproxy(old_ns); | 143 | get_nsproxy(old_ns); |
134 | 144 | ||
135 | if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | CLONE_NEWUSER))) | 145 | if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | CLONE_NEWUSER | CLONE_NEWNET))) |
136 | return 0; | 146 | return 0; |
137 | 147 | ||
138 | if (!capable(CAP_SYS_ADMIN)) { | 148 | if (!capable(CAP_SYS_ADMIN)) { |
@@ -164,6 +174,7 @@ void free_nsproxy(struct nsproxy *ns) | |||
164 | put_pid_ns(ns->pid_ns); | 174 | put_pid_ns(ns->pid_ns); |
165 | if (ns->user_ns) | 175 | if (ns->user_ns) |
166 | put_user_ns(ns->user_ns); | 176 | put_user_ns(ns->user_ns); |
177 | put_net(ns->net_ns); | ||
167 | kmem_cache_free(nsproxy_cachep, ns); | 178 | kmem_cache_free(nsproxy_cachep, ns); |
168 | } | 179 | } |
169 | 180 | ||
@@ -177,7 +188,7 @@ int unshare_nsproxy_namespaces(unsigned long unshare_flags, | |||
177 | int err = 0; | 188 | int err = 0; |
178 | 189 | ||
179 | if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | | 190 | if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | |
180 | CLONE_NEWUSER))) | 191 | CLONE_NEWUSER | CLONE_NEWNET))) |
181 | return 0; | 192 | return 0; |
182 | 193 | ||
183 | if (!capable(CAP_SYS_ADMIN)) | 194 | if (!capable(CAP_SYS_ADMIN)) |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 0f546ddea43d..bd89bc4eb0b9 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -271,8 +271,6 @@ asmlinkage void do_softirq(void) | |||
271 | local_irq_restore(flags); | 271 | local_irq_restore(flags); |
272 | } | 272 | } |
273 | 273 | ||
274 | EXPORT_SYMBOL(do_softirq); | ||
275 | |||
276 | #endif | 274 | #endif |
277 | 275 | ||
278 | /* | 276 | /* |
@@ -332,8 +330,6 @@ inline fastcall void raise_softirq_irqoff(unsigned int nr) | |||
332 | wakeup_softirqd(); | 330 | wakeup_softirqd(); |
333 | } | 331 | } |
334 | 332 | ||
335 | EXPORT_SYMBOL(raise_softirq_irqoff); | ||
336 | |||
337 | void fastcall raise_softirq(unsigned int nr) | 333 | void fastcall raise_softirq(unsigned int nr) |
338 | { | 334 | { |
339 | unsigned long flags; | 335 | unsigned long flags; |