History

Merge branch 'akpm' (fixes from Andrew)

Merge misc fixes from Andrew Morton. * emailed patches from Andrew Morton <akpm@linux-foundation.org>: alpha: boot: fix build breakage introduced by system.h disintegration memcg: initialize kmem-cache destroying work earlier Randy has moved ksm: fix m68k build: only NUMA needs pfn_to_nid dmi_scan: fix missing check for _DMI_ signature in smbios_present() Revert parts of "hlist: drop the node parameter from iterators" idr: remove WARN_ON_ONCE() on negative IDs mm/mempolicy.c: fix sp_node_init() argument ordering mm/mempolicy.c: fix wrong sp_node insertion ipc: don't allocate a copy larger than max ipc: fix potential oops when src msg > 4k w/ MSG_COPY

Linus Torvalds committed 13 years ago

Commit 59d8e5e2 parents c4c5ff0 c3d6b6213 files · +26 −34Browse files

Unified · Split

13 files
  1. CREDITS +3 −3
  2. Documentation/SubmittingPatches +1 −2
  3. Documentation/printk-formats.txt +1 −1
  4. arch/alpha/boot/head.S +1 −0
  5. drivers/firmware/dmi_scan.c +2 −3
  6. ipc/msg.c +4 −2
  7. ipc/msgutil.c +0 −3
  8. kernel/smpboot.c +1 −1
  9. lib/idr.c +3 −13
  10. mm/ksm.c +1 −1
  11. mm/memcontrol.c +6 −2
  12. mm/mempolicy.c +2 −2
  13. net/9p/trans_virtio.c +1 −1
CREDITS+3−3
@@ -953,11 +953,11 @@ S: Blacksburg, Virginia 24061 · 952 unmodified lines
953953 S: USA
954954
955955 N: Randy Dunlap
956−E: rdunlap@xenotime.net
957−W: http://www.xenotime.net/linux/linux.html
958−W: http://www.linux-usb.org
956+E: rdunlap@infradead.org
957+W: http://www.infradead.org/~rdunlap/
959958 D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
960959 D: x86 SMP, ACPI, bootflag hacking
960+D: documentation, builds
961961 S: (ask for current address)
962962 S: USA
963963
Documentation/SubmittingPatches+1−2
@@ -60,8 +60,7 @@ own source tree. For example: · 59 unmodified lines
6060 "dontdiff" is a list of files which are generated by the kernel during
6161 the build process, and should be ignored in any diff(1)-generated
6262 patch. The "dontdiff" file is included in the kernel tree in
63−2.6.12 and later. For earlier kernel versions, you can get it
64−from <http://www.xenotime.net/linux/doc/dontdiff>.
63+2.6.12 and later.
6564
6665 Make sure your patch does not include any extra files which do not
6766 belong in a patch submission. Make sure to review your patch -after-
Documentation/printk-formats.txt+1−1
@@ -170,5 +170,5 @@ Reminder: sizeof() result is of type size_t. · 169 unmodified lines
170170 Thank you for your cooperation and attention.
171171
172172
173−By Randy Dunlap <rdunlap@xenotime.net> and
173+By Randy Dunlap <rdunlap@infradead.org> and
174174 Andrew Murray <amurray@mpc-data.co.uk>
arch/alpha/boot/head.S+1−0
@@ -4,6 +4,7 @@ · 3 unmodified lines
44 * initial bootloader stuff..
55 */
66
7+#include <asm/pal.h>
78
89 .set noreorder
910 .globl __start
drivers/firmware/dmi_scan.c+2−3
@@ -442,7 +442,6 @@ static int __init dmi_present(const char __iomem *p) · 441 unmodified lines
442442 static int __init smbios_present(const char __iomem *p)
443443 {
444444 u8 buf[32];
445− int offset = 0;
446445
447446 memcpy_fromio(buf, p, 32);
448447 if ((buf[5] < 32) && dmi_checksum(buf, buf[5])) {
@@ -461,9 +460,9 @@ static int __init smbios_present(const char __iomem *p) · 12 unmodified lines
461460 dmi_ver = 0x0206;
462461 break;
463462 }
464− offset = 16;
463+ return memcmp(p + 16, "_DMI_", 5) || dmi_present(p + 16);
465464 }
466− return dmi_present(buf + offset);
465+ return 1;
467466 }
468467
469468 void __init dmi_scan_machine(void)
ipc/msg.c+4−2
@@ -820,15 +820,17 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, · 819 unmodified lines
820820 struct msg_msg *copy = NULL;
821821 unsigned long copy_number = 0;
822822
823+ ns = current->nsproxy->ipc_ns;
824+
823825 if (msqid < 0 || (long) bufsz < 0)
824826 return -EINVAL;
825827 if (msgflg & MSG_COPY) {
826− copy = prepare_copy(buf, bufsz, msgflg, &msgtyp, &copy_number);
828+ copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax),
829+ msgflg, &msgtyp, &copy_number);
827830 if (IS_ERR(copy))
828831 return PTR_ERR(copy);
829832 }
830833 mode = convert_mode(&msgtyp, msgflg);
831− ns = current->nsproxy->ipc_ns;
832834
833835 msq = msg_lock_check(ns, msqid);
834836 if (IS_ERR(msq)) {
ipc/msgutil.c+0−3
@@ -117,9 +117,6 @@ struct msg_msg *copy_msg(struct msg_msg *src, struct msg_msg *dst) · 116 unmodified lines
117117 if (alen > DATALEN_MSG)
118118 alen = DATALEN_MSG;
119119
120− dst->next = NULL;
121− dst->security = NULL;
122−
123120 memcpy(dst + 1, src + 1, alen);
124121
125122 len -= alen;
kernel/smpboot.c+1−1
@@ -131,7 +131,7 @@ static int smpboot_thread_fn(void *data) · 130 unmodified lines
131131 continue;
132132 }
133133
134− //BUG_ON(td->cpu != smp_processor_id());
134+ BUG_ON(td->cpu != smp_processor_id());
135135
136136 /* Check for state change setup */
137137 switch (td->status) {
lib/idr.c+3−13
@@ -569,8 +569,7 @@ void idr_remove(struct idr *idp, int id) · 568 unmodified lines
569569 struct idr_layer *p;
570570 struct idr_layer *to_free;
571571
572− /* see comment in idr_find_slowpath() */
573− if (WARN_ON_ONCE(id < 0))
572+ if (id < 0)
574573 return;
575574
576575 sub_remove(idp, (idp->layers - 1) * IDR_BITS, id);
@@ -667,15 +666,7 @@ void *idr_find_slowpath(struct idr *idp, int id) · 90 unmodified lines
667666 int n;
668667 struct idr_layer *p;
669668
670− /*
671− * If @id is negative, idr_find() used to ignore the sign bit and
672− * performed lookup with the rest of bits, which is weird and can
673− * lead to very obscure bugs. We're now returning NULL for all
674− * negative IDs but just in case somebody was depending on the sign
675− * bit being ignored, let's trigger WARN_ON_ONCE() so that they can
676− * be detected and fixed. WARN_ON_ONCE() can later be removed.
677− */
678− if (WARN_ON_ONCE(id < 0))
669+ if (id < 0)
679670 return NULL;
680671
681672 p = rcu_dereference_raw(idp->top);
@@ -824,8 +815,7 @@ void *idr_replace(struct idr *idp, void *ptr, int id) · 142 unmodified lines
824815 int n;
825816 struct idr_layer *p, *old_p;
826817
827− /* see comment in idr_find_slowpath() */
828− if (WARN_ON_ONCE(id < 0))
818+ if (id < 0)
829819 return ERR_PTR(-EINVAL);
830820
831821 p = idp->top;
mm/ksm.c+1−1
@@ -489,7 +489,7 @@ out: page = NULL; · 488 unmodified lines
489489 */
490490 static inline int get_kpfn_nid(unsigned long kpfn)
491491 {
492− return ksm_merge_across_nodes ? 0 : pfn_to_nid(kpfn);
492+ return ksm_merge_across_nodes ? 0 : NUMA(pfn_to_nid(kpfn));
493493 }
494494
495495 static void remove_node_from_stable_tree(struct stable_node *stable_node)
mm/memcontrol.c+6−2
@@ -3012,6 +3012,8 @@ void memcg_update_array_size(int num) · 3011 unmodified lines
30123012 memcg_limited_groups_array_size = memcg_caches_array_size(num);
30133013 }
30143014
3015+static void kmem_cache_destroy_work_func(struct work_struct *w);
3016+
30153017 int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
30163018 {
30173019 struct memcg_cache_params *cur_params = s->memcg_params;
@@ -3031,6 +3033,8 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups) · 13 unmodified lines
30313033 return -ENOMEM;
30323034 }
30333035
3036+ INIT_WORK(&s->memcg_params->destroy,
3037+ kmem_cache_destroy_work_func);
30343038 s->memcg_params->is_root_cache = true;
30353039
30363040 /*
@@ -3078,6 +3082,8 @@ int memcg_register_cache(struct mem_cgroup *memcg, struct kmem_cache *s, · 41 unmodified lines
30783082 if (!s->memcg_params)
30793083 return -ENOMEM;
30803084
3085+ INIT_WORK(&s->memcg_params->destroy,
3086+ kmem_cache_destroy_work_func);
30813087 if (memcg) {
30823088 s->memcg_params->memcg = memcg;
30833089 s->memcg_params->root_cache = root_cache;
@@ -3358,8 +3364,6 @@ static void mem_cgroup_destroy_all_caches(struct mem_cgroup *memcg) · 274 unmodified lines
33583364 list_for_each_entry(params, &memcg->memcg_slab_caches, list) {
33593365 cachep = memcg_params_to_cache(params);
33603366 cachep->memcg_params->dead = true;
3361− INIT_WORK(&cachep->memcg_params->destroy,
3362− kmem_cache_destroy_work_func);
33633367 schedule_work(&cachep->memcg_params->destroy);
33643368 }
33653369 mutex_unlock(&memcg->slab_caches_mutex);
mm/mempolicy.c+2−2
@@ -2390,9 +2390,9 @@ restart: · 2389 unmodified lines
23902390
23912391 *mpol_new = *n->policy;
23922392 atomic_set(&mpol_new->refcnt, 1);
2393− sp_node_init(n_new, n->end, end, mpol_new);
2394− sp_insert(sp, n_new);
2393+ sp_node_init(n_new, end, n->end, mpol_new);
23952394 n->end = start;
2395+ sp_insert(sp, n_new);
23962396 n_new = NULL;
23972397 mpol_new = NULL;
23982398 break;
net/9p/trans_virtio.c+1−1
@@ -655,7 +655,7 @@ static struct p9_trans_module p9_virtio_trans = { · 654 unmodified lines
655655 .create = p9_virtio_create,
656656 .close = p9_virtio_close,
657657 .request = p9_virtio_request,
658− //.zc_request = p9_virtio_zc_request,
658+ .zc_request = p9_virtio_zc_request,
659659 .cancel = p9_virtio_cancel,
660660 /*
661661 * We leave one entry for input and one entry for response