diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/audit.c | 16 | ||||
-rw-r--r-- | kernel/hrtimer.c | 3 | ||||
-rw-r--r-- | kernel/module.c | 4 | ||||
-rw-r--r-- | kernel/params.c | 4 | ||||
-rw-r--r-- | kernel/power/main.c | 18 | ||||
-rw-r--r-- | kernel/sched.c | 2 | ||||
-rw-r--r-- | kernel/sysctl.c | 2 | ||||
-rw-r--r-- | kernel/taskstats.c | 4 | ||||
-rw-r--r-- | kernel/time.c | 2 | ||||
-rw-r--r-- | kernel/timer.c | 2 |
10 files changed, 41 insertions, 16 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index 76c9a11b72d6..4e9d20829681 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -151,7 +151,7 @@ struct audit_buffer { | |||
151 | 151 | ||
152 | static void audit_set_pid(struct audit_buffer *ab, pid_t pid) | 152 | static void audit_set_pid(struct audit_buffer *ab, pid_t pid) |
153 | { | 153 | { |
154 | struct nlmsghdr *nlh = (struct nlmsghdr *)ab->skb->data; | 154 | struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); |
155 | nlh->nlmsg_pid = pid; | 155 | nlh->nlmsg_pid = pid; |
156 | } | 156 | } |
157 | 157 | ||
@@ -750,7 +750,7 @@ static void audit_receive_skb(struct sk_buff *skb) | |||
750 | u32 rlen; | 750 | u32 rlen; |
751 | 751 | ||
752 | while (skb->len >= NLMSG_SPACE(0)) { | 752 | while (skb->len >= NLMSG_SPACE(0)) { |
753 | nlh = (struct nlmsghdr *)skb->data; | 753 | nlh = nlmsg_hdr(skb); |
754 | if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len) | 754 | if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len) |
755 | return; | 755 | return; |
756 | rlen = NLMSG_ALIGN(nlh->nlmsg_len); | 756 | rlen = NLMSG_ALIGN(nlh->nlmsg_len); |
@@ -795,7 +795,7 @@ static int __init audit_init(void) | |||
795 | printk(KERN_INFO "audit: initializing netlink socket (%s)\n", | 795 | printk(KERN_INFO "audit: initializing netlink socket (%s)\n", |
796 | audit_default ? "enabled" : "disabled"); | 796 | audit_default ? "enabled" : "disabled"); |
797 | audit_sock = netlink_kernel_create(NETLINK_AUDIT, 0, audit_receive, | 797 | audit_sock = netlink_kernel_create(NETLINK_AUDIT, 0, audit_receive, |
798 | THIS_MODULE); | 798 | NULL, THIS_MODULE); |
799 | if (!audit_sock) | 799 | if (!audit_sock) |
800 | audit_panic("cannot initialize netlink socket"); | 800 | audit_panic("cannot initialize netlink socket"); |
801 | else | 801 | else |
@@ -1073,7 +1073,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt, | |||
1073 | goto out; | 1073 | goto out; |
1074 | } | 1074 | } |
1075 | va_copy(args2, args); | 1075 | va_copy(args2, args); |
1076 | len = vsnprintf(skb->tail, avail, fmt, args); | 1076 | len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args); |
1077 | if (len >= avail) { | 1077 | if (len >= avail) { |
1078 | /* The printk buffer is 1024 bytes long, so if we get | 1078 | /* The printk buffer is 1024 bytes long, so if we get |
1079 | * here and AUDIT_BUFSIZ is at least 1024, then we can | 1079 | * here and AUDIT_BUFSIZ is at least 1024, then we can |
@@ -1082,7 +1082,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt, | |||
1082 | max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail)); | 1082 | max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail)); |
1083 | if (!avail) | 1083 | if (!avail) |
1084 | goto out; | 1084 | goto out; |
1085 | len = vsnprintf(skb->tail, avail, fmt, args2); | 1085 | len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args2); |
1086 | } | 1086 | } |
1087 | if (len > 0) | 1087 | if (len > 0) |
1088 | skb_put(skb, len); | 1088 | skb_put(skb, len); |
@@ -1143,7 +1143,7 @@ void audit_log_hex(struct audit_buffer *ab, const unsigned char *buf, | |||
1143 | return; | 1143 | return; |
1144 | } | 1144 | } |
1145 | 1145 | ||
1146 | ptr = skb->tail; | 1146 | ptr = skb_tail_pointer(skb); |
1147 | for (i=0; i<len; i++) { | 1147 | for (i=0; i<len; i++) { |
1148 | *ptr++ = hex[(buf[i] & 0xF0)>>4]; /* Upper nibble */ | 1148 | *ptr++ = hex[(buf[i] & 0xF0)>>4]; /* Upper nibble */ |
1149 | *ptr++ = hex[buf[i] & 0x0F]; /* Lower nibble */ | 1149 | *ptr++ = hex[buf[i] & 0x0F]; /* Lower nibble */ |
@@ -1175,7 +1175,7 @@ static void audit_log_n_string(struct audit_buffer *ab, size_t slen, | |||
1175 | if (!avail) | 1175 | if (!avail) |
1176 | return; | 1176 | return; |
1177 | } | 1177 | } |
1178 | ptr = skb->tail; | 1178 | ptr = skb_tail_pointer(skb); |
1179 | *ptr++ = '"'; | 1179 | *ptr++ = '"'; |
1180 | memcpy(ptr, string, slen); | 1180 | memcpy(ptr, string, slen); |
1181 | ptr += slen; | 1181 | ptr += slen; |
@@ -1268,7 +1268,7 @@ void audit_log_end(struct audit_buffer *ab) | |||
1268 | audit_log_lost("rate limit exceeded"); | 1268 | audit_log_lost("rate limit exceeded"); |
1269 | } else { | 1269 | } else { |
1270 | if (audit_pid) { | 1270 | if (audit_pid) { |
1271 | struct nlmsghdr *nlh = (struct nlmsghdr *)ab->skb->data; | 1271 | struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); |
1272 | nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0); | 1272 | nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0); |
1273 | skb_queue_tail(&audit_skb_queue, ab->skb); | 1273 | skb_queue_tail(&audit_skb_queue, ab->skb); |
1274 | ab->skb = NULL; | 1274 | ab->skb = NULL; |
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index b74860aaf5f1..1b3033105b40 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -59,6 +59,7 @@ ktime_t ktime_get(void) | |||
59 | 59 | ||
60 | return timespec_to_ktime(now); | 60 | return timespec_to_ktime(now); |
61 | } | 61 | } |
62 | EXPORT_SYMBOL_GPL(ktime_get); | ||
62 | 63 | ||
63 | /** | 64 | /** |
64 | * ktime_get_real - get the real (wall-) time in ktime_t format | 65 | * ktime_get_real - get the real (wall-) time in ktime_t format |
@@ -278,6 +279,8 @@ ktime_t ktime_add_ns(const ktime_t kt, u64 nsec) | |||
278 | 279 | ||
279 | return ktime_add(kt, tmp); | 280 | return ktime_add(kt, tmp); |
280 | } | 281 | } |
282 | |||
283 | EXPORT_SYMBOL_GPL(ktime_add_ns); | ||
281 | # endif /* !CONFIG_KTIME_SCALAR */ | 284 | # endif /* !CONFIG_KTIME_SCALAR */ |
282 | 285 | ||
283 | /* | 286 | /* |
diff --git a/kernel/module.c b/kernel/module.c index dcdb32b8b13c..9da5af668a20 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -1148,8 +1148,10 @@ int mod_sysfs_setup(struct module *mod, | |||
1148 | goto out; | 1148 | goto out; |
1149 | 1149 | ||
1150 | mod->holders_dir = kobject_add_dir(&mod->mkobj.kobj, "holders"); | 1150 | mod->holders_dir = kobject_add_dir(&mod->mkobj.kobj, "holders"); |
1151 | if (!mod->holders_dir) | 1151 | if (!mod->holders_dir) { |
1152 | err = -ENOMEM; | ||
1152 | goto out_unreg; | 1153 | goto out_unreg; |
1154 | } | ||
1153 | 1155 | ||
1154 | err = module_param_sysfs_setup(mod, kparam, num_params); | 1156 | err = module_param_sysfs_setup(mod, kparam, num_params); |
1155 | if (err) | 1157 | if (err) |
diff --git a/kernel/params.c b/kernel/params.c index e265b13195b1..1fc4ac746cd8 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
@@ -356,6 +356,10 @@ int param_set_copystring(const char *val, struct kernel_param *kp) | |||
356 | { | 356 | { |
357 | struct kparam_string *kps = kp->arg; | 357 | struct kparam_string *kps = kp->arg; |
358 | 358 | ||
359 | if (!val) { | ||
360 | printk(KERN_ERR "%s: missing param set value\n", kp->name); | ||
361 | return -EINVAL; | ||
362 | } | ||
359 | if (strlen(val)+1 > kps->maxlen) { | 363 | if (strlen(val)+1 > kps->maxlen) { |
360 | printk(KERN_ERR "%s: string doesn't fit in %u chars.\n", | 364 | printk(KERN_ERR "%s: string doesn't fit in %u chars.\n", |
361 | kp->name, kps->maxlen-1); | 365 | kp->name, kps->maxlen-1); |
diff --git a/kernel/power/main.c b/kernel/power/main.c index a064dfd8877a..3062e940d1fa 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -111,13 +111,24 @@ static int suspend_prepare(suspend_state_t state) | |||
111 | return error; | 111 | return error; |
112 | } | 112 | } |
113 | 113 | ||
114 | /* default implementation */ | ||
115 | void __attribute__ ((weak)) arch_suspend_disable_irqs(void) | ||
116 | { | ||
117 | local_irq_disable(); | ||
118 | } | ||
119 | |||
120 | /* default implementation */ | ||
121 | void __attribute__ ((weak)) arch_suspend_enable_irqs(void) | ||
122 | { | ||
123 | local_irq_enable(); | ||
124 | } | ||
114 | 125 | ||
115 | int suspend_enter(suspend_state_t state) | 126 | int suspend_enter(suspend_state_t state) |
116 | { | 127 | { |
117 | int error = 0; | 128 | int error = 0; |
118 | unsigned long flags; | ||
119 | 129 | ||
120 | local_irq_save(flags); | 130 | arch_suspend_disable_irqs(); |
131 | BUG_ON(!irqs_disabled()); | ||
121 | 132 | ||
122 | if ((error = device_power_down(PMSG_SUSPEND))) { | 133 | if ((error = device_power_down(PMSG_SUSPEND))) { |
123 | printk(KERN_ERR "Some devices failed to power down\n"); | 134 | printk(KERN_ERR "Some devices failed to power down\n"); |
@@ -126,7 +137,8 @@ int suspend_enter(suspend_state_t state) | |||
126 | error = pm_ops->enter(state); | 137 | error = pm_ops->enter(state); |
127 | device_power_up(); | 138 | device_power_up(); |
128 | Done: | 139 | Done: |
129 | local_irq_restore(flags); | 140 | arch_suspend_enable_irqs(); |
141 | BUG_ON(irqs_disabled()); | ||
130 | return error; | 142 | return error; |
131 | } | 143 | } |
132 | 144 | ||
diff --git a/kernel/sched.c b/kernel/sched.c index b9a683730148..960d7c5fca39 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -4746,7 +4746,7 @@ void show_state_filter(unsigned long state_filter) | |||
4746 | * console might take alot of time: | 4746 | * console might take alot of time: |
4747 | */ | 4747 | */ |
4748 | touch_nmi_watchdog(); | 4748 | touch_nmi_watchdog(); |
4749 | if (p->state & state_filter) | 4749 | if (!state_filter || (p->state & state_filter)) |
4750 | show_task(p); | 4750 | show_task(p); |
4751 | } while_each_thread(g, p); | 4751 | } while_each_thread(g, p); |
4752 | 4752 | ||
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 1b255df4fcd0..c904748f2290 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -1676,7 +1676,7 @@ static int proc_dointvec_taint(ctl_table *table, int write, struct file *filp, | |||
1676 | { | 1676 | { |
1677 | int op; | 1677 | int op; |
1678 | 1678 | ||
1679 | if (!capable(CAP_SYS_ADMIN)) | 1679 | if (write && !capable(CAP_SYS_ADMIN)) |
1680 | return -EPERM; | 1680 | return -EPERM; |
1681 | 1681 | ||
1682 | op = OP_OR; | 1682 | op = OP_OR; |
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index 4c3476fa058d..ad7d2392cb0e 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c | |||
@@ -102,7 +102,7 @@ static int prepare_reply(struct genl_info *info, u8 cmd, struct sk_buff **skbp, | |||
102 | */ | 102 | */ |
103 | static int send_reply(struct sk_buff *skb, pid_t pid) | 103 | static int send_reply(struct sk_buff *skb, pid_t pid) |
104 | { | 104 | { |
105 | struct genlmsghdr *genlhdr = nlmsg_data((struct nlmsghdr *)skb->data); | 105 | struct genlmsghdr *genlhdr = nlmsg_data(nlmsg_hdr(skb)); |
106 | void *reply = genlmsg_data(genlhdr); | 106 | void *reply = genlmsg_data(genlhdr); |
107 | int rc; | 107 | int rc; |
108 | 108 | ||
@@ -121,7 +121,7 @@ static int send_reply(struct sk_buff *skb, pid_t pid) | |||
121 | static void send_cpu_listeners(struct sk_buff *skb, | 121 | static void send_cpu_listeners(struct sk_buff *skb, |
122 | struct listener_list *listeners) | 122 | struct listener_list *listeners) |
123 | { | 123 | { |
124 | struct genlmsghdr *genlhdr = nlmsg_data((struct nlmsghdr *)skb->data); | 124 | struct genlmsghdr *genlhdr = nlmsg_data(nlmsg_hdr(skb)); |
125 | struct listener *s, *tmp; | 125 | struct listener *s, *tmp; |
126 | struct sk_buff *skb_next, *skb_cur = skb; | 126 | struct sk_buff *skb_next, *skb_cur = skb; |
127 | void *reply = genlmsg_data(genlhdr); | 127 | void *reply = genlmsg_data(genlhdr); |
diff --git a/kernel/time.c b/kernel/time.c index 2f47888e46c9..ba18ec4899bd 100644 --- a/kernel/time.c +++ b/kernel/time.c | |||
@@ -452,6 +452,7 @@ struct timespec ns_to_timespec(const s64 nsec) | |||
452 | 452 | ||
453 | return ts; | 453 | return ts; |
454 | } | 454 | } |
455 | EXPORT_SYMBOL(ns_to_timespec); | ||
455 | 456 | ||
456 | /** | 457 | /** |
457 | * ns_to_timeval - Convert nanoseconds to timeval | 458 | * ns_to_timeval - Convert nanoseconds to timeval |
@@ -469,6 +470,7 @@ struct timeval ns_to_timeval(const s64 nsec) | |||
469 | 470 | ||
470 | return tv; | 471 | return tv; |
471 | } | 472 | } |
473 | EXPORT_SYMBOL(ns_to_timeval); | ||
472 | 474 | ||
473 | /* | 475 | /* |
474 | * Convert jiffies to milliseconds and back. | 476 | * Convert jiffies to milliseconds and back. |
diff --git a/kernel/timer.c b/kernel/timer.c index dd6c2c1c561b..b22bd39740dd 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -505,6 +505,8 @@ out: | |||
505 | return ret; | 505 | return ret; |
506 | } | 506 | } |
507 | 507 | ||
508 | EXPORT_SYMBOL(try_to_del_timer_sync); | ||
509 | |||
508 | /** | 510 | /** |
509 | * del_timer_sync - deactivate a timer and wait for the handler to finish. | 511 | * del_timer_sync - deactivate a timer and wait for the handler to finish. |
510 | * @timer: the timer to be deactivated | 512 | * @timer: the timer to be deactivated |