Rasmus Villemoes
694123031d
lib: list_sort_test(): simplify and harden cleanup
...
There is no reason to maintain the list structure while freeing the
debug elements. Aside from the redundant pointer manipulations, it is
also inefficient from a locality-of-reference viewpoint, since they are
visited in a random order (wrt. the order they were allocated).
Furthermore, if we jumped to exit: after detecting list corruption, it
is actually dangerous.
So just free the elements in the order they were allocated, using the
backing array elts. Allocate that using kcalloc(), so that if
allocation of one of the debug element fails, we just end up calling
kfree(NULL) for the trailing elements.
Minor details: Use sizeof(*elts) instead of sizeof(void *), and return
err immediately when allocation of elts fails, to avoid introducing
another label just before the final return statement.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Cc: Don Mullis <don.mullis@gmail.com>
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-08-06 18:01:25 -07:00
..
fonts
partly revert commit 8a10bc9: parisc/sti_console: prefer Linux fonts over built-in ROM fonts
2014-03-23 16:44:42 +01:00
lz4
lz4: add overrun checks to lz4_uncompress_unknownoutputsize()
2014-07-03 16:12:04 -07:00
lzo
lzo: properly check for overruns
2014-06-23 14:12:01 -04:00
mpi
MPILIB: add module description and license
2013-09-25 17:17:01 +01:00
raid6
md update for v3.12
2013-09-10 13:03:41 -07:00
reed_solomon
xz
lib/xz: enable all filters by default in Kconfig
2014-06-04 16:54:18 -07:00
zlib_deflate
zlib: clean up some dead code
2014-08-06 18:01:24 -07:00
zlib_inflate
zlib: clean up some dead code
2014-08-06 18:01:24 -07:00
.gitignore
argv_split.c
asn1_decoder.c
lib/asn1_decoder.c: kernel-doc warning fix
2014-06-04 16:54:19 -07:00
assoc_array.c
assoc_array: remove global variable
2014-01-23 09:25:10 -08:00
atomic64.c
atomic64_test.c
lib/atomic64_test.c: convert printk(KERN_INFO to pr_info
2014-06-04 16:54:19 -07:00
audit.c
audit: Add generic compat syscall support
2014-03-20 10:11:35 -04:00
average.c
lib: Ensure EWMA does not store wrong intermediate values
2014-01-16 23:46:06 -08:00
bcd.c
bch.c
bitmap.c
bitrev.c
bsearch.c
btree.c
lib/btree.c: fix leak of whole btree nodes
2014-06-04 16:54:18 -07:00
bug.c
lib/bug.c: convert printk to pr_foo()
2014-06-04 16:54:19 -07:00
build_OID_registry
bust_spinlocks.c
check_signature.c
checksum.c
clz_ctz.c
lib/clz_ctz.c: add prototype declarations in lib/clz_ctz.c
2014-04-03 16:21:12 -07:00
clz_tab.c
cmdline.c
lib/cmdline.c: add size unit t/p/e to memparse
2014-08-06 18:01:25 -07:00
compat_audit.c
audit: Add generic compat syscall support
2014-03-20 10:11:35 -04:00
cordic.c
cpu-notifier-error-inject.c
cpu_rmap.c
Remove GENERIC_HARDIRQ config option
2013-09-13 15:09:52 +02:00
cpumask.c
lib/cpumask: cpumask_set_cpu_local_first to use all cores when numa node is not defined
2014-07-02 18:29:23 -07:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crypto: crct10dif - Add fallback for broken initrds
2013-09-12 15:31:34 +10:00
crc7.c
lib/crc7: Shift crc7() output left 1 bit
2014-05-16 14:26:52 -04:00
crc8.c
crc16.c
crc32.c
lib: crc32: Add some additional __pure annotations
2014-06-25 16:04:00 -07:00
crc32defs.h
ctype.c
debug_locks.c
debugobjects.c
lib/debugobjects.c: convert printk(KERN_DEBUG to pr_debug
2014-06-04 16:53:53 -07:00
dec_and_lock.c
decompress.c
initramfs: debug detected compression method
2014-04-07 16:36:11 -07:00
decompress_bunzip2.c
decompress_inflate.c
lib/decompress_inflate.c: include appropriate header file
2014-04-03 16:21:12 -07:00
decompress_unlz4.c
lib/decompress_unlz4.c: always set an error return code on failures
2014-01-23 16:37:04 -08:00
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
devres.c
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-08-05 17:46:42 -07:00
digsig.c
lib/digsig.c: kernel-doc warning fixes
2014-06-04 16:54:19 -07:00
div64.c
math64: New separate div64_u64_rem helper
2013-08-23 09:02:14 -04:00
dma-debug.c
dma debug: account for cachelines and read-only mappings in overlap tracking
2014-03-04 07:55:47 -08:00
dump_stack.c
asmlinkage: Add explicit __visible to drivers/*, lib/*, kernel/*
2014-05-05 16:07:46 -07:00
dynamic_debug.c
net: print net_device reg_state in netdev_* unless it's registered
2014-07-20 20:38:43 -07:00
dynamic_queue_limits.c
earlycpio.c
earlycpio.c: Fix the confusing comment of find_cpio_data().
2013-08-14 23:24:01 +02:00
extable.c
fault-inject.c
fdt.c
fdt_empty_tree.c
lib: add fdt_empty_tree.c
2014-04-30 19:49:37 +01:00
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_last_bit.c
find_next_bit.c
flex_array.c
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
flex_proportions.c
gcd.c
gen_crc32table.c
genalloc.c
lib/genalloc.c: add check gen_pool_dma_alloc() if dma pointer is not NULL
2014-01-29 16:22:39 -08:00
glob.c
lib/glob.c: add CONFIG_GLOB_SELFTEST
2014-08-06 18:01:25 -07:00
halfmd4.c
hash.c
lib: hash: follow-up fixups for arch hash
2013-12-19 00:14:53 -05:00
hexdump.c
lib: introduce upper case hex ascii helpers
2013-09-20 15:38:26 -04:00
hweight.c
idr.c
idr: reduce the unneeded check in free_layer()
2014-06-06 16:08:12 -07:00
inflate.c
int_sqrt.c
interval_tree.c
lib: Export interval_tree
2014-05-05 09:09:14 +02:00
interval_tree_test.c
lib: Export interval_tree
2014-05-05 09:09:14 +02:00
iomap.c
Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP
2014-04-07 16:36:11 -07:00
iomap_copy.c
iommu-helper.c
ioremap.c
iovec.c
iovec: make sure the caller actually wants anything in memcpy_fromiovecend
2014-08-02 15:25:21 -07:00
irq_regs.c
is_single_threaded.c
jedec_ddr_data.c
kasprintf.c
Kconfig
lib/glob.c: add CONFIG_GLOB_SELFTEST
2014-08-06 18:01:25 -07:00
Kconfig.debug
printk: rename DEFAULT_MESSAGE_LOGLEVEL
2014-08-06 18:01:24 -07:00
Kconfig.kgdb
Kconfig.kmemcheck
kfifo.c
kfifo: kfifo_copy_{to,from}_user: fix copied bytes calculation
2013-11-15 09:32:23 +09:00
klist.c
klist: use same naming scheme as hlist for klist_add_after()
2014-08-06 18:01:24 -07:00
kobject.c
sysfs, kobject: add sysfs wrapper for kernfs_enable_ns()
2014-02-07 16:08:57 -08:00
kobject_uevent.c
kobject: Make support for uevent_helper optional.
2014-04-25 12:00:49 -07:00
kstrtox.c
lib/kstrtox.c: remove redundant cleanup
2014-01-23 16:36:57 -08:00
kstrtox.h
lcm.c
libcrc32c.c
lib/libcrc32c.c: use PTR_ERR_OR_ZERO
2014-06-04 16:54:18 -07:00
list_debug.c
list_sort.c
lib: list_sort_test(): simplify and harden cleanup
2014-08-06 18:01:25 -07:00
llist.c
llists-move-llist_reverse_order-from-raid5-to-llistc-fix
2013-11-15 09:32:22 +09:00
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
sched: Introduce preempt_count accessor functions
2013-09-25 14:07:32 +02:00
lockref.c
arch, locking: Ciao arch_mutex_cpu_relax()
2014-07-17 12:32:47 +02:00
lru_cache.c
Makefile
lib: add lib/glob.c
2014-08-06 18:01:24 -07:00
md5.c
memory-notifier-error-inject.c
memweight.c
net_utils.c
mac_pton: Use bool not int return
2014-06-25 17:45:43 -07:00
nlattr.c
Merge branch 'next' (accumulated 3.16 merge window patches) into master
2014-06-08 11:31:16 -07:00
notifier-error-inject.c
notifier-error-inject.h
of-reconfig-notifier-error-inject.c
oid_registry.c
parser.c
lib/parser.c: put EXPORT_SYMBOLs in the conventional place
2014-01-23 16:36:55 -08:00
pci_iomap.c
percpu-refcount.c
percpu-refcount: implement percpu_ref_reinit() and percpu_ref_is_zero()
2014-06-28 08:10:14 -04:00
percpu_counter.c
lib/percpu_counter.c: fix bad percpu counter state during suspend
2014-04-08 16:48:51 -07:00
percpu_ida.c
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
2014-02-14 10:45:18 -08:00
percpu_test.c
percpu: add test module for various percpu operations
2013-11-13 12:09:11 +09:00
plist.c
lib/plist.c: replace pr_debug with printk in plist_test()
2014-06-04 16:54:18 -07:00
pm-notifier-error-inject.c
prio_heap.c
proportions.c
radix-tree.c
lib/radix-tree.c: update the kmemleak stack trace for radix tree allocations
2014-06-06 16:08:17 -07:00
random32.c
random32: mix in entropy from core to late initcall
2014-07-30 13:55:27 -07:00
ratelimit.c
rational.c
rbtree.c
rbtree: add postorder iteration functions
2013-09-11 15:59:19 -07:00
rbtree_test.c
rbtree/test: test rbtree_postorder_for_each_entry_safe()
2014-01-23 16:37:03 -08:00
reciprocal_div.c
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
rhashtable.c
lib: Resizable, Scalable, Concurrent Hash Table
2014-08-02 19:49:38 -07:00
scatterlist.c
lib/scatterlist: export sg_miter_skip()
2013-12-08 17:56:37 -08:00
sha1.c
show_mem.c
lib/show_mem.c: show num_poisoned_pages when oom
2014-01-21 16:19:48 -08:00
smp_processor_id.c
percpu: add preemption checks to __this_cpu ops
2014-04-07 16:36:14 -07:00
sort.c
stmp_device.c
string.c
lib/string.c: use the name "C-string" in comments
2014-06-04 16:54:18 -07:00
string_helpers.c
lib/string_helpers.c: constify static arrays
2014-08-06 18:01:25 -07:00
strncpy_from_user.c
strnlen_user.c
swiotlb.c
swiotlb: don't assume PA 0 is invalid
2014-06-20 16:04:32 -04:00
syscall.c
lib/syscall.c: unexport task_current_syscall()
2014-04-03 16:21:06 -07:00
test-kstrtox.c
lib/test-kstrtox.c: use ARRAY_SIZE instead of sizeof/sizeof[0]
2014-08-06 18:01:25 -07:00
test-string_helpers.c
test_bpf.c
net: filter: split 'struct sk_filter' into socket and bpf parts
2014-08-02 15:03:58 -07:00
test_firmware.c
test: add firmware_class loader test
2014-07-17 18:44:19 -07:00
test_module.c
test: add minimal module for verification testing
2014-01-23 16:36:57 -08:00
test_user_copy.c
test: check copy_to/from_user boundary validation
2014-01-23 16:36:57 -08:00
textsearch.c
lib/textsearch.c: move EXPORT_SYMBOL after functions
2014-06-04 16:54:19 -07:00
timerqueue.c
ts_bm.c
ts_fsm.c
ts_kmp.c
ucs2_string.c
usercopy.c
uuid.c
vsprintf.c
lib/vsprintf.c: fix comparison to bool
2014-06-04 16:54:18 -07:00