Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'akpm' (patches from Andrew Morton)

Merge fixes from Andrew Morton:
"Five fixes.

err, make that six. let me try again"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
fs/ocfs2/super.c: Use bigger nodestr to accomodate 32-bit node numbers
memcg: check that kmem_cache has memcg_params before accessing it
drivers/base/memory.c: fix show_mem_removable() to handle missing sections
IPC: bugfix for msgrcv with msgtyp < 0
Omnikey Cardman 4000: pull in ioctl.h in user header
timer_list: correct the iterator for timer_list

+34 -21
+2
drivers/base/memory.c
··· 141 141 container_of(dev, struct memory_block, dev); 142 142 143 143 for (i = 0; i < sections_per_block; i++) { 144 + if (!present_section_nr(mem->start_section_nr + i)) 145 + continue; 144 146 pfn = section_nr_to_pfn(mem->start_section_nr + i); 145 147 ret &= is_mem_section_removable(pfn, PAGES_PER_SECTION); 146 148 }
+1 -1
fs/ocfs2/super.c
··· 1022 1022 struct inode *inode = NULL; 1023 1023 struct ocfs2_super *osb = NULL; 1024 1024 struct buffer_head *bh = NULL; 1025 - char nodestr[8]; 1025 + char nodestr[12]; 1026 1026 struct ocfs2_blockcheck_stats stats; 1027 1027 1028 1028 trace_ocfs2_fill_super(sb, data, silent);
+1
include/uapi/linux/cm4000_cs.h
··· 2 2 #define _UAPI_CM4000_H_ 3 3 4 4 #include <linux/types.h> 5 + #include <linux/ioctl.h> 5 6 6 7 #define MAX_ATR 33 7 8
+3 -2
ipc/msg.c
··· 839 839 840 840 static struct msg_msg *find_msg(struct msg_queue *msq, long *msgtyp, int mode) 841 841 { 842 - struct msg_msg *msg; 842 + struct msg_msg *msg, *found = NULL; 843 843 long count = 0; 844 844 845 845 list_for_each_entry(msg, &msq->q_messages, m_list) { ··· 848 848 *msgtyp, mode)) { 849 849 if (mode == SEARCH_LESSEQUAL && msg->m_type != 1) { 850 850 *msgtyp = msg->m_type - 1; 851 + found = msg; 851 852 } else if (mode == SEARCH_NUMBER) { 852 853 if (*msgtyp == count) 853 854 return msg; ··· 858 857 } 859 858 } 860 859 861 - return ERR_PTR(-EAGAIN); 860 + return found ?: ERR_PTR(-EAGAIN); 862 861 } 863 862 864 863 long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, int msgflg,
+25 -18
kernel/time/timer_list.c
··· 265 265 static int timer_list_show(struct seq_file *m, void *v) 266 266 { 267 267 struct timer_list_iter *iter = v; 268 - u64 now = ktime_to_ns(ktime_get()); 269 268 270 269 if (iter->cpu == -1 && !iter->second_pass) 271 - timer_list_header(m, now); 270 + timer_list_header(m, iter->now); 272 271 else if (!iter->second_pass) 273 272 print_cpu(m, iter->cpu, iter->now); 274 273 #ifdef CONFIG_GENERIC_CLOCKEVENTS ··· 297 298 return; 298 299 } 299 300 301 + static void *move_iter(struct timer_list_iter *iter, loff_t offset) 302 + { 303 + for (; offset; offset--) { 304 + iter->cpu = cpumask_next(iter->cpu, cpu_online_mask); 305 + if (iter->cpu >= nr_cpu_ids) { 306 + #ifdef CONFIG_GENERIC_CLOCKEVENTS 307 + if (!iter->second_pass) { 308 + iter->cpu = -1; 309 + iter->second_pass = true; 310 + } else 311 + return NULL; 312 + #else 313 + return NULL; 314 + #endif 315 + } 316 + } 317 + return iter; 318 + } 319 + 300 320 static void *timer_list_start(struct seq_file *file, loff_t *offset) 301 321 { 302 322 struct timer_list_iter *iter = file->private; 303 323 304 - if (!*offset) { 305 - iter->cpu = -1; 324 + if (!*offset) 306 325 iter->now = ktime_to_ns(ktime_get()); 307 - } else if (iter->cpu >= nr_cpu_ids) { 308 - #ifdef CONFIG_GENERIC_CLOCKEVENTS 309 - if (!iter->second_pass) { 310 - iter->cpu = -1; 311 - iter->second_pass = true; 312 - } else 313 - return NULL; 314 - #else 315 - return NULL; 316 - #endif 317 - } 318 - return iter; 326 + iter->cpu = -1; 327 + iter->second_pass = false; 328 + return move_iter(iter, *offset); 319 329 } 320 330 321 331 static void *timer_list_next(struct seq_file *file, void *v, loff_t *offset) 322 332 { 323 333 struct timer_list_iter *iter = file->private; 324 - iter->cpu = cpumask_next(iter->cpu, cpu_online_mask); 325 334 ++*offset; 326 - return timer_list_start(file, offset); 335 + return move_iter(iter, 1); 327 336 } 328 337 329 338 static void timer_list_stop(struct seq_file *seq, void *v)
+2
mm/slab.h
··· 162 162 163 163 static inline struct kmem_cache *cache_from_memcg(struct kmem_cache *s, int idx) 164 164 { 165 + if (!s->memcg_params) 166 + return NULL; 165 167 return s->memcg_params->memcg_caches[idx]; 166 168 } 167 169