14 Nov, 2011

1 commit


01 Nov, 2011

1 commit

  • Fix several compile errors on s390 caused by splitting module.h.

    Some include additions [e.g. qdio_setup.c, zfcp_qdio.c] are in
    anticipation of pending changes queued for s390 that increase
    the modular use footprint.

    [PG: added additional obvious changes since Heiko's original patch]

    Signed-off-by: Heiko Carstens
    Signed-off-by: Paul Gortmaker

    Heiko Carstens
     

04 Jul, 2011

1 commit


21 May, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (45 commits)
    crypto: caam - add support for sha512 variants of existing AEAD algorithms
    crypto: caam - remove unused authkeylen from caam_ctx
    crypto: caam - fix decryption shared vs. non-shared key setting
    crypto: caam - platform_bus_type migration
    crypto: aesni-intel - fix aesni build on i386
    crypto: aesni-intel - Merge with fpu.ko
    crypto: mv_cesa - make count_sgs() null-pointer proof
    crypto: mv_cesa - copy remaining bytes to SRAM only when needed
    crypto: mv_cesa - move digest state initialisation to a better place
    crypto: mv_cesa - fill inner/outer IV fields only in HMAC case
    crypto: mv_cesa - refactor copy_src_to_buf()
    crypto: mv_cesa - no need to save digest state after the last chunk
    crypto: mv_cesa - print a warning when registration of AES algos fail
    crypto: mv_cesa - drop this call to mv_hash_final from mv_hash_finup
    crypto: mv_cesa - the descriptor pointer register needs to be set just once
    crypto: mv_cesa - use ablkcipher_request_cast instead of the manual container_of
    crypto: caam - fix printk recursion for long error texts
    crypto: caam - remove unused keylen from session context
    hwrng: amd - enable AMD hw rnd driver for Maple PPC boards
    hwrng: amd - manage resource allocation
    ...

    Linus Torvalds
     

04 May, 2011

5 commits


27 Apr, 2011

1 commit

  • The git commit c708c57e247775928b9a6bce7b4d8d14883bf39b fixed the
    access beyond the end of the stack in prng_seed but the pointer
    arithmetic is still incorrect. The calculation has been off by
    a factor of 64, now it is only off by a factor of 8. prng_seed
    is called with a maximum of 16 for nbytes, small enough that
    the incorrect calculation stays insides the limits of the stack.
    Place parentheses for correct pointer arithmetic.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

20 Apr, 2011

1 commit

  • While initializing the state of the prng only the first 8 bytes of
    random data where used, the second 8 bytes were read from the memory
    after the stack. If only 64 bytes of the kernel stack are used and
    CONFIG_DEBUG_PAGEALLOC is enabled a kernel panic may occur because of
    the invalid page access. Use the correct multiplicator to stay within
    the random data buffer.

    Signed-off-by: Jan Glauber
    Signed-off-by: Martin Schwidefsky

    Jan Glauber
     

07 Feb, 2011

1 commit

  • The partial block handling in sha-s390 is broken when we get a
    partial block that is followed by an update which fills it with
    bytes left-over. Instead of storing the newly left-over bytes
    at the start of the buffer, it will be stored immediately after
    the previous partial block.

    This patch fixes this by resetting the index pointer.

    Signed-off-by: Herbert Xu

    Herbert Xu
     

25 Oct, 2010

1 commit


15 Oct, 2010

1 commit

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     

26 May, 2010

1 commit


21 May, 2010

2 commits

  • Get rid of the des_s390 specific key check module and use the generic DES
    weak key check instead. Also use the generic DES header and remove the
    weak key check in 3DES mode, as RFC2451 mentions that the DES weak keys
    are not relevant for 3DES.

    Signed-off-by: Jan Glauber
    Signed-off-by: Herbert Xu

    Jan Glauber
     
  • des_s390 implements support for 3DES with a 128 bit key. This mode is probably
    not used anywhere, less secure than 3DES with a 192 bit key and not
    implemented in the generic des version. Removing this mode seems to be low risk
    and will ease maintenance of the code.

    Signed-off-by: Jan Glauber
    Signed-off-by: Herbert Xu

    Jan Glauber
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

08 Mar, 2010

1 commit


27 Feb, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (31 commits)
    crypto: aes_generic - Fix checkpatch errors
    crypto: fcrypt - Fix checkpatch errors
    crypto: ecb - Fix checkpatch errors
    crypto: des_generic - Fix checkpatch errors
    crypto: deflate - Fix checkpatch errors
    crypto: crypto_null - Fix checkpatch errors
    crypto: cipher - Fix checkpatch errors
    crypto: crc32 - Fix checkpatch errors
    crypto: compress - Fix checkpatch errors
    crypto: cast6 - Fix checkpatch errors
    crypto: cast5 - Fix checkpatch errors
    crypto: camellia - Fix checkpatch errors
    crypto: authenc - Fix checkpatch errors
    crypto: api - Fix checkpatch errors
    crypto: anubis - Fix checkpatch errors
    crypto: algapi - Fix checkpatch errors
    crypto: blowfish - Fix checkpatch errors
    crypto: aead - Fix checkpatch errors
    crypto: ablkcipher - Fix checkpatch errors
    crypto: pcrypt - call the complete function on error
    ...

    Linus Torvalds
     

05 Feb, 2010

1 commit


08 Jan, 2010

1 commit

  • The fallback code in cipher mode touch the union fallback.blk instead
    of fallback.cip. This is wrong because we use the cipher and not the
    blockcipher. This did not show any side effects yet because both types /
    structs contain the same element right now.

    Signed-off-by: Roel Kluin
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Herbert Xu

    Roel Kluin
     

19 Dec, 2009

1 commit


14 Oct, 2009

1 commit

  • cycle_kernel_lock() was added during the big BKL pushdown. It should
    ensure the serializiation against driver init code. In this case there
    is nothing to serialize. Remove it.

    Signed-off-by: Thomas Gleixner
    Cc: Martin Schwidefsky
    LKML-Reference:
    Acked-by: Jan Glauber

    Thomas Gleixner
     

05 Sep, 2009

1 commit


22 Jul, 2009

1 commit

  • This patch adds export/import support to sha512-s390 (which includes
    sha384-s390). The exported type is defined by struct sha512_state,
    which is basically the entire descriptor state of sha512_generic.

    Since sha512-s390 only supports a 64-bit byte count the import
    function will reject anything that exceeds that.

    Signed-off-by: Herbert Xu

    Herbert Xu
     

16 Jul, 2009

1 commit


11 Jul, 2009

2 commits


18 Jun, 2009

1 commit

  • Just started running fips cavs test vectors through an s390x system
    for giggles, and discovered that I missed patching s390's arch-specific
    des3 implementation w/an earlier des3 patch to permit weak keys.

    This change adds the same flag tweaks as
    ad79cdd77fc1466e45cf923890f66bcfe7c43f12 (crypto: des3_ede - permit
    weak keys unless REQ_WEAK_KEY set) for s390's des3 implementation,
    yields expected test results now.

    Signed-off-by: Jarod Wilson
    Signed-off-by: Herbert Xu

    Jarod Wilson
     

27 Mar, 2009

2 commits

  • * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (81 commits)
    [S390] remove duplicated #includes
    [S390] cpumask: use mm_cpumask() wrapper
    [S390] cpumask: Use accessors code.
    [S390] cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.
    [S390] cpumask: remove cpu_coregroup_map
    [S390] fix clock comparator save area usage
    [S390] Add hwcap flag for the etf3 enhancement facility
    [S390] Ensure that ipl panic notifier is called late.
    [S390] fix dfp elf hwcap/facility bit detection
    [S390] smp: perform initial cpu reset before starting a cpu
    [S390] smp: fix memory leak on __cpu_up
    [S390] ipl: Improve checking logic and remove switch defaults.
    [S390] s390dbf: Remove needless check for NULL pointer.
    [S390] s390dbf: Remove redundant initilizations.
    [S390] use kzfree()
    [S390] BUG to BUG_ON changes
    [S390] zfcpdump: Prevent zcore from beeing built as a kernel module.
    [S390] Use csum_partial in checksum.h
    [S390] cleanup lowcore.h
    [S390] eliminate ipl_device from lowcore
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (29 commits)
    crypto: sha512-s390 - Add missing block size
    hwrng: timeriomem - Breaks an allyesconfig build on s390:
    nlattr: Fix build error with NET off
    crypto: testmgr - add zlib test
    crypto: zlib - New zlib crypto module, using pcomp
    crypto: testmgr - Add support for the pcomp interface
    crypto: compress - Add pcomp interface
    netlink: Move netlink attribute parsing support to lib
    crypto: Fix dead links
    hwrng: timeriomem - New driver
    crypto: chainiv - Use kcrypto_wq instead of keventd_wq
    crypto: cryptd - Per-CPU thread implementation based on kcrypto_wq
    crypto: api - Use dedicated workqueue for crypto subsystem
    crypto: testmgr - Test skciphers with no IVs
    crypto: aead - Avoid infinite loop when nivaead fails selftest
    crypto: skcipher - Avoid infinite loop when cipher fails selftest
    crypto: api - Fix crypto_alloc_tfm/create_create_tfm return convention
    crypto: api - crypto_alg_mod_lookup either tested or untested
    crypto: amcc - Add crypt4xx driver
    crypto: ansi_cprng - Add maintainer
    ...

    Linus Torvalds
     

26 Mar, 2009

1 commit

  • Use kzfree() instead of memset() + kfree().

    Signed-off-by: Johannes Weiner
    Reviewed-by: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Johannes Weiner
     

21 Mar, 2009

1 commit


26 Feb, 2009

1 commit

  • With the mandatory algorithm testing at registration, we have
    now created a deadlock with algorithms requiring fallbacks.
    This can happen if the module containing the algorithm requiring
    fallback is loaded first, without the fallback module being loaded
    first. The system will then try to test the new algorithm, find
    that it needs to load a fallback, and then try to load that.

    As both algorithms share the same module alias, it can attempt
    to load the original algorithm again and block indefinitely.

    As algorithms requiring fallbacks are a special case, we can fix
    this by giving them a different module alias than the rest. Then
    it's just a matter of using the right aliases according to what
    algorithms we're trying to find.

    Signed-off-by: Herbert Xu

    Herbert Xu
     

18 Feb, 2009

1 commit


25 Dec, 2008

1 commit


15 Jul, 2008

2 commits

  • * 'bkl-removal' of git://git.lwn.net/linux-2.6: (146 commits)
    IB/umad: BKL is not needed for ib_umad_open()
    IB/uverbs: BKL is not needed for ib_uverbs_open()
    bf561-coreb: BKL unneeded for open()
    Call fasync() functions without the BKL
    snd/PCM: fasync BKL pushdown
    ipmi: fasync BKL pushdown
    ecryptfs: fasync BKL pushdown
    Bluetooth VHCI: fasync BKL pushdown
    tty_io: fasync BKL pushdown
    tun: fasync BKL pushdown
    i2o: fasync BKL pushdown
    mpt: fasync BKL pushdown
    Remove BKL from remote_llseek v2
    Make FAT users happier by not deadlocking
    x86-mce: BKL pushdown
    vmwatchdog: BKL pushdown
    vmcp: BKL pushdown
    via-pmu: BKL pushdown
    uml-random: BKL pushdown
    uml-mmapper: BKL pushdown
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (50 commits)
    crypto: ixp4xx - Select CRYPTO_AUTHENC
    crypto: s390 - Respect STFL bit
    crypto: talitos - Add support for sha256 and md5 variants
    crypto: hash - Move ahash functions into crypto/hash.h
    crypto: crc32c - Add ahash implementation
    crypto: hash - Added scatter list walking helper
    crypto: prng - Deterministic CPRNG
    crypto: hash - Removed vestigial ahash fields
    crypto: hash - Fixed digest size check
    crypto: rmd - sparse annotations
    crypto: rmd128 - sparse annotations
    crypto: camellia - Use kernel-provided bitops, unaligned access helpers
    crypto: talitos - Use proper form for algorithm driver names
    crypto: talitos - Add support for 3des
    crypto: padlock - Make module loading quieter when hardware isn't available
    crypto: tcrpyt - Remove unnecessary kmap/kunmap calls
    crypto: ixp4xx - Hardware crypto support for IXP4xx CPUs
    crypto: talitos - Freescale integrated security engine (SEC) driver
    [CRYPTO] tcrypt: Add self test for des3_ebe cipher operating in cbc mode
    [CRYPTO] rmd: Use pointer form of endian swapping operations
    ...

    Linus Torvalds
     

14 Jul, 2008

1 commit