24 May, 2012

2 commits

  • Pull md updates from NeilBrown:
    "It's been a busy cycle for md - lots of fun stuff here.. if you like
    this kind of thing :-)

    Main features:
    - RAID10 arrays can be reshaped - adding and removing devices and
    changing chunks (not 'far' array though)
    - allow RAID5 arrays to be reshaped with a backup file (not tested
    yet, but the priciple works fine for RAID10).
    - arrays can be reshaped while a bitmap is present - you no longer
    need to remove it first
    - SSSE3 support for RAID6 syndrome calculations

    and of course a number of minor fixes etc."

    * tag 'md-3.5' of git://neil.brown.name/md: (56 commits)
    md/bitmap: record the space available for the bitmap in the superblock.
    md/raid10: Remove extras after reshape to smaller number of devices.
    md/raid5: improve removal of extra devices after reshape.
    md: check the return of mddev_find()
    MD RAID1: Further conditionalize 'fullsync'
    DM RAID: Use md_error() in place of simply setting Faulty bit
    DM RAID: Record and handle missing devices
    DM RAID: Set recovery flags on resume
    md/raid5: Allow reshape while a bitmap is present.
    md/raid10: resize bitmap when required during reshape.
    md: allow array to be resized while bitmap is present.
    md/bitmap: make sure reshape request are reflected in superblock.
    md/bitmap: add bitmap_resize function to allow bitmap resizing.
    md/bitmap: use DIV_ROUND_UP instead of open-code
    md/bitmap: create a 'struct bitmap_counts' substructure of 'struct bitmap'
    md/bitmap: make bitmap bitops atomic.
    md/bitmap: make _page_attr bitops atomic.
    md/bitmap: merge bitmap_file_unmap and bitmap_file_put.
    md/bitmap: remove async freeing of bitmap file.
    md/bitmap: convert some spin_lock_irqsave to spin_lock_irq
    ...

    Linus Torvalds
     
  • Pull crypto updates from Herbert Xu:
    - New cipher/hash driver for ARM ux500.
    - Code clean-up for aesni-intel.
    - Misc fixes.

    Fixed up conflicts in arch/arm/mach-ux500/devices-common.h, where quite
    frankly some of it made no sense at all (the pull brought in a
    declaration for the dbx500_add_platform_device_noirq() function, which
    neither exists nor is used anywhere).

    Also some trivial add-add context conflicts in the Kconfig file in
    drivers/{char/hw_random,crypto}/

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: aesni-intel - move more common code to ablk_init_common
    crypto: aesni-intel - use crypto_[un]register_algs
    crypto: ux500 - Cleanup hardware identification
    crypto: ux500 - Update DMA handling for 3.4
    mach-ux500: crypto - core support for CRYP/HASH module.
    crypto: ux500 - Add driver for HASH hardware
    crypto: ux500 - Add driver for CRYP hardware
    hwrng: Kconfig - modify default state for atmel-rng driver
    hwrng: omap - use devm_request_and_ioremap
    crypto: crypto4xx - move up err_request_irq label
    crypto, xor: Sanitize checksumming function selection output
    crypto: caam - add backward compatible string sec4.0

    Linus Torvalds
     

22 May, 2012

2 commits


15 May, 2012

1 commit


24 Apr, 2012

1 commit


21 Apr, 2012

1 commit


13 Apr, 2012

1 commit


11 Apr, 2012

1 commit


10 Apr, 2012

1 commit


09 Apr, 2012

1 commit

  • Currently, it says

    [ 1.015541] xor: automatically using best checksumming function: generic_sse
    [ 1.040769] generic_sse: 6679.000 MB/sec
    [ 1.045377] xor: using function: generic_sse (6679.000 MB/sec)

    and repeats the function name three times unnecessarily. Change it into

    [ 1.015115] xor: automatically using best checksumming function:
    [ 1.040794] generic_sse: 6680.000 MB/sec

    and save us a line in dmesg.

    No functional change.

    Cc: Herbert Xu
    Signed-off-by: Borislav Petkov
    Signed-off-by: Herbert Xu

    Borislav Petkov
     

05 Apr, 2012

1 commit

  • The current code only increments the upper 64 bits of the SHA-512 byte
    counter when the number of bytes hashed happens to hit 2^64 exactly.

    This patch increments the upper 64 bits whenever the lower 64 bits
    overflows.

    Signed-off-by: Kent Yoder
    Cc: stable@kernel.org
    Signed-off-by: Herbert Xu

    Kent Yoder
     

03 Apr, 2012

1 commit

  • Pull crypto fixes from Herbert Xu:
    - Fix for CPU hotplug hang in padata.
    - Avoid using cpu_active inappropriately in pcrypt and padata.
    - Fix for user-space algorithm lookup hang with IV generators.
    - Fix for netlink dump of algorithms where stuff went missing due to
    incorrect calculation of message size.

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: user - Fix size of netlink dump message
    crypto: user - Fix lookup of algorithms with IV generator
    crypto: pcrypt - Use the online cpumask as the default
    padata: Fix cpu hotplug
    padata: Use the online cpumask as the default
    padata: Add a reference to the api documentation

    Linus Torvalds
     

02 Apr, 2012

1 commit


29 Mar, 2012

3 commits

  • The default netlink message size limit might be exceeded when dumping a
    lot of algorithms to userspace. As a result, not all of the instantiated
    algorithms dumped to userspace. So calculate an upper bound on the message
    size and call netlink_dump_start() with that value.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • We lookup algorithms with crypto_alg_mod_lookup() when instantiating via
    crypto_add_alg(). However, algorithms that are wrapped by an IV genearator
    (e.g. aead or genicv type algorithms) need special care. The userspace
    process hangs until it gets a timeout when we use crypto_alg_mod_lookup()
    to lookup these algorithms. So export the lookup functions for these
    algorithms and use them in crypto_add_alg().

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • We use the active cpumask to determine the superset of cpus
    to use for parallelization. However, the active cpumask is
    for internal usage of the scheduler and therefore not the
    appropriate cpumask for these purposes. So use the online
    cpumask instead.

    Reported-by: Peter Zijlstra
    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     

24 Mar, 2012

1 commit


22 Mar, 2012

2 commits

  • Pull crypto update from Herbert Xu:
    "* sha512 bug fixes (already in your tree).
    * SHA224/SHA384 AEAD support in caam.
    * X86-64 optimised version of Camellia.
    * Tegra AES support.
    * Bulk algorithm registration interface to make driver registration easier.
    * padata race fixes.
    * Misc fixes."

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (31 commits)
    padata: Fix race on sequence number wrap
    padata: Fix race in the serialization path
    crypto: camellia - add assembler implementation for x86_64
    crypto: camellia - rename camellia.c to camellia_generic.c
    crypto: camellia - fix checkpatch warnings
    crypto: camellia - rename camellia module to camellia_generic
    crypto: tcrypt - add more camellia tests
    crypto: testmgr - add more camellia test vectors
    crypto: camellia - simplify key setup and CAMELLIA_ROUNDSM macro
    crypto: twofish-x86_64/i586 - set alignmask to zero
    crypto: blowfish-x86_64 - set alignmask to zero
    crypto: serpent-sse2 - combine ablk_*_init functions
    crypto: blowfish-x86_64 - use crypto_[un]register_algs
    crypto: twofish-x86_64-3way - use crypto_[un]register_algs
    crypto: serpent-sse2 - use crypto_[un]register_algs
    crypto: serpent-sse2 - remove dead code from serpent_sse2_glue.c::serpent_sse2_init()
    crypto: twofish-x86 - Remove dead code from twofish_glue_3way.c::init()
    crypto: In crypto_add_alg(), 'exact' wants to be initialized to 0
    crypto: caam - fix gcc 4.6 warning
    crypto: Add bulk algorithm registration interface
    ...

    Linus Torvalds
     
  • Pull kmap_atomic cleanup from Cong Wang.

    It's been in -next for a long time, and it gets rid of the (no longer
    used) second argument to k[un]map_atomic().

    Fix up a few trivial conflicts in various drivers, and do an "evil
    merge" to catch some new uses that have come in since Cong's tree.

    * 'kmap_atomic' of git://github.com/congwang/linux: (59 commits)
    feature-removal-schedule.txt: schedule the deprecated form of kmap_atomic() for removal
    highmem: kill all __kmap_atomic() [swarren@nvidia.com: highmem: Fix ARM build break due to __kmap_atomic rename]
    drbd: remove the second argument of k[un]map_atomic()
    zcache: remove the second argument of k[un]map_atomic()
    gma500: remove the second argument of k[un]map_atomic()
    dm: remove the second argument of k[un]map_atomic()
    tomoyo: remove the second argument of k[un]map_atomic()
    sunrpc: remove the second argument of k[un]map_atomic()
    rds: remove the second argument of k[un]map_atomic()
    net: remove the second argument of k[un]map_atomic()
    mm: remove the second argument of k[un]map_atomic()
    lib: remove the second argument of k[un]map_atomic()
    power: remove the second argument of k[un]map_atomic()
    kdb: remove the second argument of k[un]map_atomic()
    udf: remove the second argument of k[un]map_atomic()
    ubifs: remove the second argument of k[un]map_atomic()
    squashfs: remove the second argument of k[un]map_atomic()
    reiserfs: remove the second argument of k[un]map_atomic()
    ocfs2: remove the second argument of k[un]map_atomic()
    ntfs: remove the second argument of k[un]map_atomic()
    ...

    Linus Torvalds
     

20 Mar, 2012

1 commit


14 Mar, 2012

7 commits

  • Patch adds x86_64 assembler implementation of Camellia block cipher. Two set of
    functions are provided. First set is regular 'one-block at time' encrypt/decrypt
    functions. Second is 'two-block at time' functions that gain performance increase
    on out-of-order CPUs. Performance of 2-way functions should be equal to 1-way
    functions with in-order CPUs.

    Patch has been tested with tcrypt and automated filesystem tests.

    Tcrypt benchmark results:

    AMD Phenom II 1055T (fam:16, model:10):

    camellia-asm vs camellia_generic:
    128bit key: (lrw:256bit) (xts:256bit)
    size ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B 1.27x 1.22x 1.30x 1.42x 1.30x 1.34x 1.19x 1.05x 1.23x 1.24x
    64B 1.74x 1.79x 1.43x 1.87x 1.81x 1.87x 1.48x 1.38x 1.55x 1.62x
    256B 1.90x 1.87x 1.43x 1.94x 1.94x 1.95x 1.63x 1.62x 1.67x 1.70x
    1024B 1.96x 1.93x 1.43x 1.95x 1.98x 2.01x 1.67x 1.69x 1.74x 1.80x
    8192B 1.96x 1.96x 1.39x 1.93x 2.01x 2.03x 1.72x 1.64x 1.71x 1.76x

    256bit key: (lrw:384bit) (xts:512bit)
    size ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B 1.23x 1.23x 1.33x 1.39x 1.34x 1.38x 1.04x 1.18x 1.21x 1.29x
    64B 1.72x 1.69x 1.42x 1.78x 1.81x 1.89x 1.57x 1.52x 1.56x 1.65x
    256B 1.85x 1.88x 1.42x 1.86x 1.93x 1.96x 1.69x 1.65x 1.70x 1.75x
    1024B 1.88x 1.86x 1.45x 1.95x 1.96x 1.95x 1.77x 1.71x 1.77x 1.78x
    8192B 1.91x 1.86x 1.42x 1.91x 2.03x 1.98x 1.73x 1.71x 1.78x 1.76x

    camellia-asm vs aes-asm (8kB block):
    128bit 256bit
    ecb-enc 1.15x 1.22x
    ecb-dec 1.16x 1.16x
    cbc-enc 0.85x 0.90x
    cbc-dec 1.20x 1.23x
    ctr-enc 1.28x 1.30x
    ctr-dec 1.27x 1.28x
    lrw-enc 1.12x 1.16x
    lrw-dec 1.08x 1.10x
    xts-enc 1.11x 1.15x
    xts-dec 1.14x 1.15x

    Intel Core2 T8100 (fam:6, model:23, step:6):

    camellia-asm vs camellia_generic:
    128bit key: (lrw:256bit) (xts:256bit)
    size ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B 1.10x 1.12x 1.14x 1.16x 1.16x 1.15x 1.02x 1.02x 1.08x 1.08x
    64B 1.61x 1.60x 1.17x 1.68x 1.67x 1.66x 1.43x 1.42x 1.44x 1.42x
    256B 1.65x 1.73x 1.17x 1.77x 1.81x 1.80x 1.54x 1.53x 1.58x 1.54x
    1024B 1.76x 1.74x 1.18x 1.80x 1.85x 1.85x 1.60x 1.59x 1.65x 1.60x
    8192B 1.77x 1.75x 1.19x 1.81x 1.85x 1.86x 1.63x 1.61x 1.66x 1.62x

    256bit key: (lrw:384bit) (xts:512bit)
    size ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B 1.10x 1.07x 1.13x 1.16x 1.11x 1.16x 1.03x 1.02x 1.08x 1.07x
    64B 1.61x 1.62x 1.15x 1.66x 1.63x 1.68x 1.47x 1.46x 1.47x 1.44x
    256B 1.71x 1.70x 1.16x 1.75x 1.69x 1.79x 1.58x 1.57x 1.59x 1.55x
    1024B 1.78x 1.72x 1.17x 1.75x 1.80x 1.80x 1.63x 1.62x 1.65x 1.62x
    8192B 1.76x 1.73x 1.17x 1.78x 1.80x 1.81x 1.64x 1.62x 1.68x 1.64x

    camellia-asm vs aes-asm (8kB block):
    128bit 256bit
    ecb-enc 1.17x 1.21x
    ecb-dec 1.17x 1.20x
    cbc-enc 0.80x 0.82x
    cbc-dec 1.22x 1.24x
    ctr-enc 1.25x 1.26x
    ctr-dec 1.25x 1.26x
    lrw-enc 1.14x 1.18x
    lrw-dec 1.13x 1.17x
    xts-enc 1.14x 1.18x
    xts-dec 1.14x 1.17x

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • Fix checkpatch warnings before renaming file.

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • Rename camellia module to camellia_generic to allow optimized assembler
    implementations to autoload with module-alias.

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • Add tests for CTR, LRW and XTS modes.

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • New ECB, CBC, CTR, LRW and XTS test vectors for camellia. Larger ECB/CBC test
    vectors needed for parallel 2-way camellia implementation.

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     
  • camellia_setup_tail() applies 'inverse of the last half of P-function' to
    subkeys, which is unneeded if keys are applied directly to yl/yr in
    CAMELLIA_ROUNDSM.

    Patch speeds up key setup and should speed up CAMELLIA_ROUNDSM as applying
    key to yl/yr early has less register dependencies.

    Quick tcrypt camellia results:
    x86_64, AMD Phenom II, ~5% faster
    x86_64, Intel Core 2, ~0.5% faster
    i386, Intel Atom N270, ~1% faster

    Signed-off-by: Jussi Kivilinna
    Signed-off-by: Herbert Xu

    Jussi Kivilinna
     

27 Feb, 2012

1 commit


19 Feb, 2012

1 commit


16 Feb, 2012

2 commits


14 Feb, 2012

1 commit

  • This updates the sha512 fix so that it doesn't cause excessive stack
    usage on i386. This is done by reverting to the original code, and
    avoiding the W duplication by moving its initialisation into the loop.

    As the underlying code is in fact the one that we have used for years,
    I'm pushing this now instead of postponing to the next cycle.

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: sha512 - Avoid stack bloat on i386
    crypto: sha512 - Use binary and instead of modulus

    Linus Torvalds
     

05 Feb, 2012

2 commits

  • We declare 'exact' without initializing it and then do:

    [...]
    if (strlen(p->cru_driver_name))
    exact = 1;

    if (priority && !exact)
    return -EINVAL;

    [...]

    If the first 'if' is not true, then the second will test an
    uninitialized 'exact'.
    As far as I can tell, what we want is for 'exact' to be initialized to
    0 (zero/false).

    Signed-off-by: Jesper Juhl
    Acked-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Jesper Juhl
     
  • Unfortunately in reducing W from 80 to 16 we ended up unrolling
    the loop twice. As gcc has issues dealing with 64-bit ops on
    i386 this means that we end up using even more stack space (>1K).

    This patch solves the W reduction by moving LOAD_OP/BLEND_OP
    into the loop itself, thus avoiding the need to duplicate it.

    While the stack space still isn't great (>0.5K) it is at least
    in the same ball park as the amount of stack used for our C sha1
    implementation.

    Note that this patch basically reverts to the original code so
    the diff looks bigger than it really is.

    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu

    Herbert Xu
     

26 Jan, 2012

3 commits


15 Jan, 2012

2 commits

  • * 'for-linus' of git://selinuxproject.org/~jmorris/linux-security:
    capabilities: remove __cap_full_set definition
    security: remove the security_netlink_recv hook as it is equivalent to capable()
    ptrace: do not audit capability check when outputing /proc/pid/stat
    capabilities: remove task_ns_* functions
    capabitlies: ns_capable can use the cap helpers rather than lsm call
    capabilities: style only - move capable below ns_capable
    capabilites: introduce new has_ns_capabilities_noaudit
    capabilities: call has_ns_capability from has_capability
    capabilities: remove all _real_ interfaces
    capabilities: introduce security_capable_noaudit
    capabilities: reverse arguments to security_capable
    capabilities: remove the task from capable LSM hook entirely
    selinux: sparse fix: fix several warnings in the security server cod
    selinux: sparse fix: fix warnings in netlink code
    selinux: sparse fix: eliminate warnings for selinuxfs
    selinux: sparse fix: declare selinux_disable() in security.h
    selinux: sparse fix: move selinux_complete_init
    selinux: sparse fix: make selinux_secmark_refcount static
    SELinux: Fix RCU deref check warning in sel_netport_insert()

    Manually fix up a semantic mis-merge wrt security_netlink_recv():

    - the interface was removed in commit fd7784615248 ("security: remove
    the security_netlink_recv hook as it is equivalent to capable()")

    - a new user of it appeared in commit a38f7907b926 ("crypto: Add
    userspace configuration API")

    causing no automatic merge conflict, but Eric Paris pointed out the
    issue.

    Linus Torvalds
     
  • Use standard ror64() instead of hand-written.
    There is no standard ror64, so create it.

    The difference is shift value being "unsigned int" instead of uint64_t
    (for which there is no reason). gcc starts to emit native ROR instructions
    which it doesn't do for some reason currently. This should make the code
    faster.

    Patch survives in-tree crypto test and ping flood with hmac(sha512) on.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Herbert Xu

    Alexey Dobriyan