diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Kconfig.debug | 9 | ||||
| -rw-r--r-- | lib/Makefile | 2 | ||||
| -rw-r--r-- | lib/dma-debug.c | 53 | ||||
| -rw-r--r-- | lib/kobject.c | 3 | ||||
| -rw-r--r-- | lib/kobject_uevent.c | 4 | ||||
| -rw-r--r-- | lib/scatterlist.c | 9 |
6 files changed, 17 insertions, 63 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index c6e854f215fa..6cdcf38f2da9 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
| @@ -440,7 +440,7 @@ config LOCKDEP | |||
| 440 | bool | 440 | bool |
| 441 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 441 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
| 442 | select STACKTRACE | 442 | select STACKTRACE |
| 443 | select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND | 443 | select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390 |
| 444 | select KALLSYMS | 444 | select KALLSYMS |
| 445 | select KALLSYMS_ALL | 445 | select KALLSYMS_ALL |
| 446 | 446 | ||
| @@ -620,7 +620,7 @@ config ARCH_WANT_FRAME_POINTERS | |||
| 620 | config FRAME_POINTER | 620 | config FRAME_POINTER |
| 621 | bool "Compile the kernel with frame pointers" | 621 | bool "Compile the kernel with frame pointers" |
| 622 | depends on DEBUG_KERNEL && \ | 622 | depends on DEBUG_KERNEL && \ |
| 623 | (CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ | 623 | (CRIS || M68K || M68KNOMMU || FRV || UML || \ |
| 624 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ | 624 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ |
| 625 | ARCH_WANT_FRAME_POINTERS | 625 | ARCH_WANT_FRAME_POINTERS |
| 626 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS | 626 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS |
| @@ -809,13 +809,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER | |||
| 809 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT | 809 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT |
| 810 | depends on !X86_64 | 810 | depends on !X86_64 |
| 811 | select STACKTRACE | 811 | select STACKTRACE |
| 812 | select FRAME_POINTER if !PPC | 812 | select FRAME_POINTER if !PPC && !S390 |
| 813 | help | 813 | help |
| 814 | Provide stacktrace filter for fault-injection capabilities | 814 | Provide stacktrace filter for fault-injection capabilities |
| 815 | 815 | ||
| 816 | config LATENCYTOP | 816 | config LATENCYTOP |
| 817 | bool "Latency measuring infrastructure" | 817 | bool "Latency measuring infrastructure" |
| 818 | select FRAME_POINTER if !MIPS && !PPC | 818 | select FRAME_POINTER if !MIPS && !PPC && !S390 |
| 819 | select KALLSYMS | 819 | select KALLSYMS |
| 820 | select KALLSYMS_ALL | 820 | select KALLSYMS_ALL |
| 821 | select STACKTRACE | 821 | select STACKTRACE |
| @@ -891,7 +891,6 @@ config DYNAMIC_DEBUG | |||
| 891 | default n | 891 | default n |
| 892 | depends on PRINTK | 892 | depends on PRINTK |
| 893 | depends on DEBUG_FS | 893 | depends on DEBUG_FS |
| 894 | select PRINTK_DEBUG | ||
| 895 | help | 894 | help |
| 896 | 895 | ||
| 897 | Compiles debug level messages into the kernel, which would not | 896 | Compiles debug level messages into the kernel, which would not |
diff --git a/lib/Makefile b/lib/Makefile index d6edd6753f40..33a40e40e3ee 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
| @@ -38,7 +38,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o | |||
| 38 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o | 38 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o |
| 39 | lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o | 39 | lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o |
| 40 | lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o | 40 | lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o |
| 41 | lib-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o | 41 | obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o |
| 42 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o | 42 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o |
| 43 | obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o | 43 | obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o |
| 44 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o | 44 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o |
diff --git a/lib/dma-debug.c b/lib/dma-debug.c index d3da7edc034f..69da09a085a1 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c | |||
| @@ -400,60 +400,9 @@ out_err: | |||
| 400 | return -ENOMEM; | 400 | return -ENOMEM; |
| 401 | } | 401 | } |
| 402 | 402 | ||
| 403 | static int device_dma_allocations(struct device *dev) | ||
| 404 | { | ||
| 405 | struct dma_debug_entry *entry; | ||
| 406 | unsigned long flags; | ||
| 407 | int count = 0, i; | ||
| 408 | |||
| 409 | for (i = 0; i < HASH_SIZE; ++i) { | ||
| 410 | spin_lock_irqsave(&dma_entry_hash[i].lock, flags); | ||
| 411 | list_for_each_entry(entry, &dma_entry_hash[i].list, list) { | ||
| 412 | if (entry->dev == dev) | ||
| 413 | count += 1; | ||
| 414 | } | ||
| 415 | spin_unlock_irqrestore(&dma_entry_hash[i].lock, flags); | ||
| 416 | } | ||
| 417 | |||
| 418 | return count; | ||
| 419 | } | ||
| 420 | |||
| 421 | static int dma_debug_device_change(struct notifier_block *nb, | ||
| 422 | unsigned long action, void *data) | ||
| 423 | { | ||
| 424 | struct device *dev = data; | ||
| 425 | int count; | ||
| 426 | |||
| 427 | |||
| 428 | switch (action) { | ||
| 429 | case BUS_NOTIFY_UNBIND_DRIVER: | ||
| 430 | count = device_dma_allocations(dev); | ||
| 431 | if (count == 0) | ||
| 432 | break; | ||
| 433 | err_printk(dev, NULL, "DMA-API: device driver has pending " | ||
| 434 | "DMA allocations while released from device " | ||
| 435 | "[count=%d]\n", count); | ||
| 436 | break; | ||
| 437 | default: | ||
| 438 | break; | ||
| 439 | } | ||
| 440 | |||
| 441 | return 0; | ||
| 442 | } | ||
| 443 | |||
| 444 | void dma_debug_add_bus(struct bus_type *bus) | 403 | void dma_debug_add_bus(struct bus_type *bus) |
| 445 | { | 404 | { |
| 446 | struct notifier_block *nb; | 405 | /* FIXME: register notifier */ |
| 447 | |||
| 448 | nb = kzalloc(sizeof(struct notifier_block), GFP_KERNEL); | ||
| 449 | if (nb == NULL) { | ||
| 450 | printk(KERN_ERR "dma_debug_add_bus: out of memory\n"); | ||
| 451 | return; | ||
| 452 | } | ||
| 453 | |||
| 454 | nb->notifier_call = dma_debug_device_change; | ||
| 455 | |||
| 456 | bus_register_notifier(bus, nb); | ||
| 457 | } | 406 | } |
| 458 | 407 | ||
| 459 | /* | 408 | /* |
diff --git a/lib/kobject.c b/lib/kobject.c index a6dec32f2ddd..bacf6fe4f7a0 100644 --- a/lib/kobject.c +++ b/lib/kobject.c | |||
| @@ -218,6 +218,9 @@ int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, | |||
| 218 | const char *old_name = kobj->name; | 218 | const char *old_name = kobj->name; |
| 219 | char *s; | 219 | char *s; |
| 220 | 220 | ||
| 221 | if (kobj->name && !fmt) | ||
| 222 | return 0; | ||
| 223 | |||
| 221 | kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); | 224 | kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); |
| 222 | if (!kobj->name) | 225 | if (!kobj->name) |
| 223 | return -ENOMEM; | 226 | return -ENOMEM; |
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 97a777ad4f59..920a3ca6e259 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c | |||
| @@ -258,7 +258,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | |||
| 258 | goto exit; | 258 | goto exit; |
| 259 | 259 | ||
| 260 | retval = call_usermodehelper(argv[0], argv, | 260 | retval = call_usermodehelper(argv[0], argv, |
| 261 | env->envp, UMH_NO_WAIT); | 261 | env->envp, UMH_WAIT_EXEC); |
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | exit: | 264 | exit: |
| @@ -328,7 +328,7 @@ static int __init kobject_uevent_init(void) | |||
| 328 | "kobject_uevent: unable to create netlink socket!\n"); | 328 | "kobject_uevent: unable to create netlink socket!\n"); |
| 329 | return -ENODEV; | 329 | return -ENODEV; |
| 330 | } | 330 | } |
| 331 | 331 | netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV); | |
| 332 | return 0; | 332 | return 0; |
| 333 | } | 333 | } |
| 334 | 334 | ||
diff --git a/lib/scatterlist.c b/lib/scatterlist.c index b7b449dafbe5..a295e404e908 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c | |||
| @@ -347,9 +347,12 @@ bool sg_miter_next(struct sg_mapping_iter *miter) | |||
| 347 | sg_miter_stop(miter); | 347 | sg_miter_stop(miter); |
| 348 | 348 | ||
| 349 | /* get to the next sg if necessary. __offset is adjusted by stop */ | 349 | /* get to the next sg if necessary. __offset is adjusted by stop */ |
| 350 | if (miter->__offset == miter->__sg->length && --miter->__nents) { | 350 | while (miter->__offset == miter->__sg->length) { |
| 351 | miter->__sg = sg_next(miter->__sg); | 351 | if (--miter->__nents) { |
| 352 | miter->__offset = 0; | 352 | miter->__sg = sg_next(miter->__sg); |
| 353 | miter->__offset = 0; | ||
| 354 | } else | ||
| 355 | return false; | ||
| 353 | } | 356 | } |
| 354 | 357 | ||
| 355 | /* map the next page */ | 358 | /* map the next page */ |
