25 Oct, 2011

5 commits

  • * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (38 commits)
    mm: memory hotplug: Check if pages are correctly reserved on a per-section basis
    Revert "memory hotplug: Correct page reservation checking"
    Update email address for stable patch submission
    dynamic_debug: fix undefined reference to `__netdev_printk'
    dynamic_debug: use a single printk() to emit messages
    dynamic_debug: remove num_enabled accounting
    dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions
    uio: Support physical addresses >32 bits on 32-bit systems
    sysfs: add unsigned long cast to prevent compile warning
    drivers: base: print rejected matches with DEBUG_DRIVER
    memory hotplug: Correct page reservation checking
    memory hotplug: Refuse to add unaligned memory regions
    remove the messy code file Documentation/zh_CN/SubmitChecklist
    ARM: mxc: convert device creation to use platform_device_register_full
    new helper to create platform devices with dma mask
    docs/driver-model: Update device class docs
    docs/driver-model: Document device.groups
    kobj_uevent: Ignore if some listeners cannot handle message
    dynamic_debug: make netif_dbg() call __netdev_printk()
    dynamic_debug: make netdev_dbg() call __netdev_printk()
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits)
    MAINTAINERS: linux-m32r is moderated for non-subscribers
    linux@lists.openrisc.net is moderated for non-subscribers
    Drop default from "DM365 codec select" choice
    parisc: Kconfig: cleanup Kernel page size default
    Kconfig: remove redundant CONFIG_ prefix on two symbols
    cris: remove arch/cris/arch-v32/lib/nand_init.S
    microblaze: add missing CONFIG_ prefixes
    h8300: drop puzzling Kconfig dependencies
    MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers
    tty: drop superfluous dependency in Kconfig
    ARM: mxc: fix Kconfig typo 'i.MX51'
    Fix file references in Kconfig files
    aic7xxx: fix Kconfig references to READMEs
    Fix file references in drivers/ide/
    thinkpad_acpi: Fix printk typo 'bluestooth'
    bcmring: drop commented out line in Kconfig
    btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888'
    doc: raw1394: Trivial typo fix
    CIFS: Don't free volume_info->UNC until we are entirely done with it.
    treewide: Correct spelling of successfully in comments
    ...

    Linus Torvalds
     
  • * 'for-linus' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm: (81 commits)
    ARM: 7133/1: SMP: fix per cpu timer setup before the cpu is marked online
    ARM: 7129/1: Add __arm_ioremap_exec for mapping external memory as MT_MEMORY
    ARM: 7136/1: pl330: Fix a race condition
    ARM: smp: fix clipping of number of CPUs
    ARM: 7137/1: Fix error upon adding LL debug
    ARM: Add a few machine types to mach-types
    ARM: 7130/1: dev_archdata: add private iommu extension
    ARM: 7125/1: Add unwinding annotations for 64bit division functions
    ARM: 7120/1: remove bashism in check for multiple zreladdrs
    ARM: 7118/1: rename temp variable in read*_relaxed()
    ARM: 6217/4: mach-realview: expose PB1176 ROM using physmap and map_rom
    ARM: 7098/1: kdump: copy kernel relocation code at the kexec prepare stage
    ARM: 7062/1: cache: detect PIPT I-cache using CTR
    ARM: platform fixups: remove mdesc argument to fixup function
    ARM: 7017/1: Use generic BUG() handler
    ARM: 7102/1: mach-integrator: update defconfig
    ARM: 7087/2: mach-integrator: get timer frequency from clock
    ARM: 7086/2: mach-integrator: modernize clock event registration
    ARM: 7085/2: mach-integrator: clockevent supports oneshot mode
    ARM: 7084/1: mach-integrator: retire some timer macros
    ...

    Linus Torvalds
     
  • * 'next' of git://selinuxproject.org/~jmorris/linux-security: (95 commits)
    TOMOYO: Fix incomplete read after seek.
    Smack: allow to access /smack/access as normal user
    TOMOYO: Fix unused kernel config option.
    Smack: fix: invalid length set for the result of /smack/access
    Smack: compilation fix
    Smack: fix for /smack/access output, use string instead of byte
    Smack: domain transition protections (v3)
    Smack: Provide information for UDS getsockopt(SO_PEERCRED)
    Smack: Clean up comments
    Smack: Repair processing of fcntl
    Smack: Rule list lookup performance
    Smack: check permissions from user space (v2)
    TOMOYO: Fix quota and garbage collector.
    TOMOYO: Remove redundant tasklist_lock.
    TOMOYO: Fix domain transition failure warning.
    TOMOYO: Remove tomoyo_policy_memory_lock spinlock.
    TOMOYO: Simplify garbage collector.
    TOMOYO: Fix make namespacecheck warnings.
    target: check hex2bin result
    encrypted-keys: check hex2bin result
    ...

    Linus Torvalds
     
  • …'pgt' (early part) and 'smp' into for-linus

    Russell King
     

19 Oct, 2011

3 commits

  • Dynamic debug recently added support for netdev_printk. It uses
    __netdev_printk() to support this functionality. However, when CONFIG_NET
    is not set, we get the following error:

    lib/built-in.o: In function `__dynamic_netdev_dbg':
    (.text+0x9fda): undefined reference to `__netdev_printk'

    Fix this by making the call to netdev_printk() contingent upon CONFIG_NET.
    We could have fixed this by defining netdev_printk() to a 'no-op' in the
    !CONFIG_NET case. However, this is not consistent with how the networking
    layer uses netdev_printk. For example, CONFIG_NET is not set,
    netdev_printk() does not have a 'no-op' definition defined.

    Signed-off-by: Jason Baron
    Acked-by: Randy Dunlap
    Acked-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     
  • We were using KERN_CONT to combine messages with their prefix. However,
    KERN_CONT is not smp safe, in the sense that it can interleave messages.
    This interleaving can result in printks coming out at the wrong loglevel.
    With the high frequency of printks that dynamic debug can produce this is
    not desirable.

    So make dynamic_emit_prefix() fill a char buf[64] instead of doing a
    printk directly. If we enable printing out of function, module, line, or
    pid info, they are placed in this 64 byte buffer. In my testing 64 bytes
    was enough size to fulfill all requests. Even if it's not, we can match
    up the printk itself to see where it's from, so to me this is no big deal.

    [akpm@linux-foundation.org: convert dangerous macro to C]
    Signed-off-by: Jason Baron
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     
  • The num_enabled accounting isn't actually used anywhere - remove them.

    Signed-off-by: Jason Baron
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     

02 Oct, 2011

1 commit

  • Thumb2 kernels cannot be built with frame pointers, but can use the
    ARM_UNWIND feature for unwinding instead. This makes sure that all
    features that rely on unwinding includeing CONFIG_LATENCYTOP and
    FAULT_INJECTION_STACKTRACE_FILTER do not enable frame pointers
    when the unwinder is already selected, and we always build with
    the unwinder when we want a thumb2 kernel, to make sure we do not
    get the frame pointers instead.

    A different option would be to redefine the CONFIG_FRAME_POINTERS
    option on ARM to mean builing with either frame pointers or
    the unwinder, and then select which one to use based on the
    CPU architecture or another user option. That would still allow
    building thumb2 kernels without the unwinder but would also be
    more confusing.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

22 Sep, 2011

1 commit

  • xz_dec_run() could incorrectly return XZ_BUF_ERROR if all of the
    following was true:

    - The caller knows how many bytes of output to expect and only provides
    that much output space.

    - When the last output bytes are decoded, the caller-provided input
    buffer ends right before the LZMA2 end of payload marker. So LZMA2
    won't provide more output anymore, but it won't know it yet and thus
    won't return XZ_STREAM_END yet.

    - A BCJ filter is in use and it hasn't left any unfiltered bytes in the
    temp buffer. This can happen with any BCJ filter, but in practice
    it's more likely with filters other than the x86 BCJ.

    This fixes where
    Squashfs thinks that a valid file system is corrupt.

    This also fixes a similar bug in single-call mode where the uncompressed
    size of a block using BCJ + LZMA2 was 0 bytes and caller provided no
    output space. Many empty .xz files don't contain any blocks and thus
    don't trigger this bug.

    This also tweaks a closely related detail: xz_dec_bcj_run() could call
    xz_dec_lzma2_run() to decode into temp buffer when it was known to be
    useless. This was harmless although it wasted a minuscule number of CPU
    cycles.

    Signed-off-by: Lasse Collin
    Cc: stable
    Signed-off-by: Linus Torvalds

    Lasse Collin
     

21 Sep, 2011

1 commit

  • hex2bin converts a hexadecimal string to its binary representation.
    The original version of hex2bin did not do any error checking. This
    patch adds error checking and returns the result.

    Changelog v1:
    - removed unpack_hex_byte()
    - changed return code from boolean to int

    Changelog:
    - use the new unpack_hex_byte()
    - add __must_check compiler option (Andy Shevchenko's suggestion)
    - change function API to return error checking result
    (based on Tetsuo Handa's initial patch)

    Signed-off-by: Mimi Zohar
    Acked-by: Andy Shevchenko

    Mimi Zohar
     

15 Sep, 2011

3 commits


14 Sep, 2011

1 commit


31 Aug, 2011

1 commit

  • If there are no builtin users of find_next_bit_le() and
    find_next_zero_bit_le(), these functions are not present in the kernel
    image, causing m68k allmodconfig to fail with:

    ERROR: "find_next_zero_bit_le" [fs/ufs/ufs.ko] undefined!
    ERROR: "find_next_bit_le" [fs/udf/udf.ko] undefined!
    ...

    This started to happen after commit 171d809df189 ("m68k: merge mmu and
    non-mmu bitops.h"), as m68k had its own inline versions before.

    commit 63e424c84429 ("arch: remove CONFIG_GENERIC_FIND_{NEXT_BIT,
    BIT_LE, LAST_BIT}") added find_last_bit.o to obj-y (so it's always
    included), but find_next_bit.o to lib-y (so it gets removed by the
    linker if there are no builtin users).

    Signed-off-by: Geert Uytterhoeven
    Cc: Akinobu Mita
    Cc: Greg Ungerer
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

23 Aug, 2011

7 commits


07 Aug, 2011

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net: Compute protocol sequence numbers and fragment IDs using MD5.
    crypto: Move md5_transform to lib/md5.c

    Linus Torvalds
     
  • We are going to use this for TCP/IP sequence number and fragment ID
    generation.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • For ChromiumOS, we use SHA-1 to verify the integrity of the root
    filesystem. The speed of the kernel sha-1 implementation has a major
    impact on our boot performance.

    To improve boot performance, we investigated using the heavily optimized
    sha-1 implementation used in git. With the git sha-1 implementation, we
    see a 11.7% improvement in boot time.

    10 reboots, remove slowest/fastest.

    Before:

    Mean: 6.58 seconds Stdev: 0.14

    After (with git sha-1, this patch):

    Mean: 5.89 seconds Stdev: 0.07

    The other cool thing about the git SHA-1 implementation is that it only
    needs 64 bytes of stack for the workspace while the original kernel
    implementation needed 320 bytes.

    Signed-off-by: Mandeep Singh Baines
    Cc: Ramsay Jones
    Cc: Nicolas Pitre
    Cc: Herbert Xu
    Cc: David S. Miller
    Cc: linux-crypto@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Mandeep Singh Baines
     

04 Aug, 2011

6 commits

  • Signed-off-by: Paul Bolle
    Signed-off-by: Jiri Kosina

    Paul Bolle
     
  • * 'apei-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
    ACPI, APEI, EINJ Param support is disabled by default
    APEI GHES: 32-bit buildfix
    ACPI: APEI build fix
    ACPI, APEI, GHES: Add hardware memory error recovery support
    HWPoison: add memory_failure_queue()
    ACPI, APEI, GHES, Error records content based throttle
    ACPI, APEI, GHES, printk support for recoverable error via NMI
    lib, Make gen_pool memory allocator lockless
    lib, Add lock-less NULL terminated single list
    Add Kconfig option ARCH_HAVE_NMI_SAFE_CMPXCHG
    ACPI, APEI, Add WHEA _OSC support
    ACPI, APEI, Add APEI bit support in generic _OSC call
    ACPI, APEI, GHES, Support disable GHES at boot time
    ACPI, APEI, GHES, Prevent GHES to be built as module
    ACPI, APEI, Use apei_exec_run_optional in APEI EINJ and ERST
    ACPI, APEI, Add apei_exec_run_optional
    ACPI, APEI, GHES, Do not ratelimit fatal error printk before panic
    ACPI, APEI, ERST, Fix erst-dbg long record reading issue
    ACPI, APEI, ERST, Prevent erst_dbg from loading if ERST is disabled

    Linus Torvalds
     
  • We have already acknowledged that swapoff of a tmpfs file is slower than
    it was before conversion to the generic radix_tree: a little slower
    there will be acceptable, if the hotter paths are faster.

    But it was a shock to find swapoff of a 500MB file 20 times slower on my
    laptop, taking 10 minutes; and at that rate it significantly slows down
    my testing.

    Now, most of that turned out to be overhead from PROVE_LOCKING and
    PROVE_RCU: without those it was only 4 times slower than before; and
    more realistic tests on other machines don't fare as badly.

    I've tried a number of things to improve it, including tagging the swap
    entries, then doing lookup by tag: I'd expected that to halve the time,
    but in practice it's erratic, and often counter-productive.

    The only change I've so far found to make a consistent improvement, is
    to short-circuit the way we go back and forth, gang lookup packing
    entries into the array supplied, then shmem scanning that array for the
    target entry. Scanning in place doubles the speed, so it's now only
    twice as slow as before (or three times slower when the PROVEs are on).

    So, add radix_tree_locate_item() as an expedient, once-off,
    single-caller hack to do the lookup directly in place. #ifdef it on
    CONFIG_SHMEM and CONFIG_SWAP, as much to document its limited
    applicability as save space in other configurations. And, sadly,
    #include sched.h for cond_resched().

    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • A patchset to extend tmpfs to MAX_LFS_FILESIZE by abandoning its
    peculiar swap vector, instead keeping a file's swap entries in the same
    radix tree as its struct page pointers: thus saving memory, and
    simplifying its code and locking.

    This patch:

    The radix_tree is used by several subsystems for different purposes. A
    major use is to store the struct page pointers of a file's pagecache for
    memory management. But what if mm wanted to store something other than
    page pointers there too?

    The low bit of a radix_tree entry is already used to denote an indirect
    pointer, for internal use, and the unlikely radix_tree_deref_retry()
    case.

    Define the next bit as denoting an exceptional entry, and supply inline
    functions radix_tree_exception() to return non-0 in either unlikely
    case, and radix_tree_exceptional_entry() to return non-0 in the second
    case.

    If a subsystem already uses radix_tree with that bit set, no problem: it
    does not affect internal workings at all, but is defined for the
    convenience of those storing well-aligned pointers in the radix_tree.

    The radix_tree_gang_lookups have an implicit assumption that the caller
    can deduce the offset of each entry returned e.g. by the page->index of
    a struct page. But that may not be feasible for some kinds of item to
    be stored there.

    radix_tree_gang_lookup_slot() allow for an optional indices argument,
    output array in which to return those offsets. The same could be added
    to other radix_tree_gang_lookups, but for now keep it to the only one
    for which we need it.

    Signed-off-by: Hugh Dickins
    Acked-by: Rik van Riel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • The current hyper-optimized functions are overkill if you simply want to
    allocate an id for a device. Create versions which use an internal
    lock.

    In followup patches, numerous drivers are converted to use this
    interface.

    Thanks to Tejun for feedback.

    Signed-off-by: Rusty Russell
    Acked-by: Tejun Heo
    Acked-by: Jonathan Cameron
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rusty Russell
     
  • init_fault_attr_dentries() is used to export fault_attr via debugfs.
    But it can only export it in debugfs root directory.

    Per Forlin is working on mmc_fail_request which adds support to inject
    data errors after a completed host transfer in MMC subsystem.

    The fault_attr for mmc_fail_request should be defined per mmc host and
    export it in debugfs directory per mmc host like
    /sys/kernel/debug/mmc0/mmc_fail_request.

    init_fault_attr_dentries() doesn't help for mmc_fail_request. So this
    introduces fault_create_debugfs_attr() which is able to create a
    directory in the arbitrary directory and replace
    init_fault_attr_dentries().

    [akpm@linux-foundation.org: extraneous semicolon, per Randy]
    Signed-off-by: Akinobu Mita
    Tested-by: Per Forlin
    Cc: Jens Axboe
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: Matt Mackall
    Cc: Randy Dunlap
    Cc: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

03 Aug, 2011

3 commits

  • Some trivial conflicts due to other various merges
    adding to the end of common lists sooner than this one.

    arch/ia64/Kconfig
    arch/powerpc/Kconfig
    arch/x86/Kconfig
    lib/Kconfig
    lib/Makefile

    Signed-off-by: Len Brown

    Len Brown
     
  • This version of the gen_pool memory allocator supports lockless
    operation.

    This makes it safe to use in NMI handlers and other special
    unblockable contexts that could otherwise deadlock on locks. This is
    implemented by using atomic operations and retries on any conflicts.
    The disadvantage is that there may be livelocks in extreme cases. For
    better scalability, one gen_pool allocator can be used for each CPU.

    The lockless operation only works if there is enough memory available.
    If new memory is added to the pool a lock has to be still taken. So
    any user relying on locklessness has to ensure that sufficient memory
    is preallocated.

    The basic atomic operation of this allocator is cmpxchg on long. On
    architectures that don't have NMI-safe cmpxchg implementation, the
    allocator can NOT be used in NMI handler. So code uses the allocator
    in NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.

    Signed-off-by: Huang Ying
    Reviewed-by: Andi Kleen
    Reviewed-by: Mathieu Desnoyers
    Cc: Andrew Morton
    Signed-off-by: Len Brown

    Huang Ying
     
  • Cmpxchg is used to implement adding new entry to the list, deleting
    all entries from the list, deleting first entry of the list and some
    other operations.

    Because this is a single list, so the tail can not be accessed in O(1).

    If there are multiple producers and multiple consumers, llist_add can
    be used in producers and llist_del_all can be used in consumers. They
    can work simultaneously without lock. But llist_del_first can not be
    used here. Because llist_del_first depends on list->first->next does
    not changed if list->first is not changed during its operation, but
    llist_del_first, llist_add, llist_add (or llist_del_all, llist_add,
    llist_add) sequence in another consumer may violate that.

    If there are multiple producers and one consumer, llist_add can be
    used in producers and llist_del_all or llist_del_first can be used in
    the consumer.

    This can be summarized as follow:

    | add | del_first | del_all
    add | - | - | -
    del_first | | L | L
    del_all | | | -

    Where "-" stands for no lock is needed, while "L" stands for lock is
    needed.

    The list entries deleted via llist_del_all can be traversed with
    traversing function such as llist_for_each etc. But the list entries
    can not be traversed safely before deleted from the list. The order
    of deleted entries is from the newest to the oldest added one. If you
    want to traverse from the oldest to the newest, you must reverse the
    order by yourself before traversing.

    The basic atomic operation of this list is cmpxchg on long. On
    architectures that don't have NMI-safe cmpxchg implementation, the
    list can NOT be used in NMI handler. So code uses the list in NMI
    handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.

    Signed-off-by: Huang Ying
    Reviewed-by: Andi Kleen
    Reviewed-by: Mathieu Desnoyers
    Cc: Andrew Morton
    Signed-off-by: Len Brown

    Huang Ying
     

27 Jul, 2011

5 commits