diff options
author | Tejun Heo <tj@kernel.org> | 2009-07-03 18:13:18 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-07-03 18:13:18 -0400 |
commit | c43768cbb7655ea5ff782ae250f6e2ef4297cf98 (patch) | |
tree | 3982e41dde3eecaa3739a5d1a8ed18d04bd74f01 /lib | |
parent | 1a8dd307cc0a2119be4e578c517795464e6dabba (diff) | |
parent | 746a99a5af60ee676afa2ba469ccd1373493c7e7 (diff) |
Merge branch 'master' into for-next
Pull linus#master to merge PER_CPU_DEF_ATTRIBUTES and alpha build fix
changes. As alpha in percpu tree uses 'weak' attribute instead of
inline assembly, there's no need for __used attribute.
Conflicts:
arch/alpha/include/asm/percpu.h
arch/mn10300/kernel/vmlinux.lds.S
include/linux/percpu-defs.h
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Kconfig.debug | 17 | ||||
-rw-r--r-- | lib/checksum.c | 10 |
2 files changed, 24 insertions, 3 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 77e0d8b1b7c5..43173c4e0ade 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -340,8 +340,6 @@ config DEBUG_KMEMLEAK | |||
340 | bool "Kernel memory leak detector" | 340 | bool "Kernel memory leak detector" |
341 | depends on DEBUG_KERNEL && EXPERIMENTAL && (X86 || ARM) && \ | 341 | depends on DEBUG_KERNEL && EXPERIMENTAL && (X86 || ARM) && \ |
342 | !MEMORY_HOTPLUG | 342 | !MEMORY_HOTPLUG |
343 | select DEBUG_SLAB if SLAB | ||
344 | select SLUB_DEBUG if SLUB | ||
345 | select DEBUG_FS if SYSFS | 343 | select DEBUG_FS if SYSFS |
346 | select STACKTRACE if STACKTRACE_SUPPORT | 344 | select STACKTRACE if STACKTRACE_SUPPORT |
347 | select KALLSYMS | 345 | select KALLSYMS |
@@ -355,9 +353,24 @@ config DEBUG_KMEMLEAK | |||
355 | allocations. See Documentation/kmemleak.txt for more | 353 | allocations. See Documentation/kmemleak.txt for more |
356 | details. | 354 | details. |
357 | 355 | ||
356 | Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances | ||
357 | of finding leaks due to the slab objects poisoning. | ||
358 | |||
358 | In order to access the kmemleak file, debugfs needs to be | 359 | In order to access the kmemleak file, debugfs needs to be |
359 | mounted (usually at /sys/kernel/debug). | 360 | mounted (usually at /sys/kernel/debug). |
360 | 361 | ||
362 | config DEBUG_KMEMLEAK_EARLY_LOG_SIZE | ||
363 | int "Maximum kmemleak early log entries" | ||
364 | depends on DEBUG_KMEMLEAK | ||
365 | range 200 2000 | ||
366 | default 400 | ||
367 | help | ||
368 | Kmemleak must track all the memory allocations to avoid | ||
369 | reporting false positives. Since memory may be allocated or | ||
370 | freed before kmemleak is initialised, an early log buffer is | ||
371 | used to store these actions. If kmemleak reports "early log | ||
372 | buffer exceeded", please increase this value. | ||
373 | |||
361 | config DEBUG_KMEMLEAK_TEST | 374 | config DEBUG_KMEMLEAK_TEST |
362 | tristate "Simple test for the kernel memory leak detector" | 375 | tristate "Simple test for the kernel memory leak detector" |
363 | depends on DEBUG_KMEMLEAK | 376 | depends on DEBUG_KMEMLEAK |
diff --git a/lib/checksum.c b/lib/checksum.c index 12e5a1c91cda..b2e2fd468461 100644 --- a/lib/checksum.c +++ b/lib/checksum.c | |||
@@ -55,7 +55,11 @@ static unsigned int do_csum(const unsigned char *buff, int len) | |||
55 | goto out; | 55 | goto out; |
56 | odd = 1 & (unsigned long) buff; | 56 | odd = 1 & (unsigned long) buff; |
57 | if (odd) { | 57 | if (odd) { |
58 | #ifdef __LITTLE_ENDIAN | ||
58 | result = *buff; | 59 | result = *buff; |
60 | #else | ||
61 | result += (*buff << 8); | ||
62 | #endif | ||
59 | len--; | 63 | len--; |
60 | buff++; | 64 | buff++; |
61 | } | 65 | } |
@@ -71,7 +75,7 @@ static unsigned int do_csum(const unsigned char *buff, int len) | |||
71 | if (count) { | 75 | if (count) { |
72 | unsigned long carry = 0; | 76 | unsigned long carry = 0; |
73 | do { | 77 | do { |
74 | unsigned long w = *(unsigned long *) buff; | 78 | unsigned long w = *(unsigned int *) buff; |
75 | count--; | 79 | count--; |
76 | buff += 4; | 80 | buff += 4; |
77 | result += carry; | 81 | result += carry; |
@@ -87,7 +91,11 @@ static unsigned int do_csum(const unsigned char *buff, int len) | |||
87 | } | 91 | } |
88 | } | 92 | } |
89 | if (len & 1) | 93 | if (len & 1) |
94 | #ifdef __LITTLE_ENDIAN | ||
95 | result += *buff; | ||
96 | #else | ||
90 | result += (*buff << 8); | 97 | result += (*buff << 8); |
98 | #endif | ||
91 | result = from32to16(result); | 99 | result = from32to16(result); |
92 | if (odd) | 100 | if (odd) |
93 | result = ((result >> 8) & 0xff) | ((result & 0xff) << 8); | 101 | result = ((result >> 8) & 0xff) | ((result & 0xff) << 8); |