Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6 into next
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Jun 2014 02:44:40 +0000 (19:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Jun 2014 02:44:40 +0000 (19:44 -0700)
Pull crypto updates from Herbert Xu:
 "Here is the crypto update for 3.16:

   - Added test vectors for SHA/AES-CCM/DES-CBC/3DES-CBC.
   - Fixed a number of error-path memory leaks in tcrypt.
   - Fixed error-path memory leak in caam.
   - Removed unnecessary global mutex from mxs-dcp.
   - Added ahash walk interface that can actually be asynchronous.
   - Cleaned up caam error reporting.
   - Allow crypto_user get operation to be used by non-root users.
   - Add support for SSS module on Exynos.
   - Misc fixes"

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6: (60 commits)
  crypto: testmgr - add aead cbc des, des3_ede tests
  crypto: testmgr - Fix DMA-API warning
  crypto: cesa - tfm->__crt_alg->cra_type directly
  crypto: sahara - tfm->__crt_alg->cra_name directly
  crypto: padlock - tfm->__crt_alg->cra_name directly
  crypto: n2 - tfm->__crt_alg->cra_name directly
  crypto: dcp - tfm->__crt_alg->cra_name directly
  crypto: cesa - tfm->__crt_alg->cra_name directly
  crypto: ccp - tfm->__crt_alg->cra_name directly
  crypto: geode - Don't use tfm->__crt_alg->cra_name directly
  crypto: geode - Weed out printk() from probe()
  crypto: geode - Consistently use AES_KEYSIZE_128
  crypto: geode - Kill AES_IV_LENGTH
  crypto: geode - Kill AES_MIN_BLOCK_SIZE
  crypto: mxs-dcp - Remove global mutex
  crypto: hash - Add real ahash walk interface
  hwrng: n2-drv - Introduce the use of the managed version of kzalloc
  crypto: caam - reinitialize keys_fit_inline for decrypt and givencrypt
  crypto: s5p-sss - fix multiplatform build
  hwrng: timeriomem - remove unnecessary OOM messages
  ...

1  2 
crypto/crypto_user.c
drivers/char/hw_random/Kconfig
drivers/crypto/nx/nx-842.c

diff --combined crypto/crypto_user.c
index 43665d0d0905ddddf018fe68655c1ff7685b0b9e,aa906b8fdd178c02d71658b9d5a199f8f14f907a..e2a34feec7a4cf80199e651032c70eee8d94460b
@@@ -265,6 -265,9 +265,9 @@@ static int crypto_update_alg(struct sk_
        struct nlattr *priority = attrs[CRYPTOCFGA_PRIORITY_VAL];
        LIST_HEAD(list);
  
 -      if (!capable(CAP_NET_ADMIN))
++      if (!netlink_capable(skb, CAP_NET_ADMIN))
+               return -EPERM;
        if (!null_terminated(p->cru_name) || !null_terminated(p->cru_driver_name))
                return -EINVAL;
  
@@@ -295,6 -298,9 +298,9 @@@ static int crypto_del_alg(struct sk_buf
        struct crypto_alg *alg;
        struct crypto_user_alg *p = nlmsg_data(nlh);
  
 -      if (!capable(CAP_NET_ADMIN))
++      if (!netlink_capable(skb, CAP_NET_ADMIN))
+               return -EPERM;
        if (!null_terminated(p->cru_name) || !null_terminated(p->cru_driver_name))
                return -EINVAL;
  
@@@ -379,6 -385,9 +385,9 @@@ static int crypto_add_alg(struct sk_buf
        struct crypto_user_alg *p = nlmsg_data(nlh);
        struct nlattr *priority = attrs[CRYPTOCFGA_PRIORITY_VAL];
  
 -      if (!capable(CAP_NET_ADMIN))
++      if (!netlink_capable(skb, CAP_NET_ADMIN))
+               return -EPERM;
        if (!null_terminated(p->cru_name) || !null_terminated(p->cru_driver_name))
                return -EINVAL;
  
@@@ -466,9 -475,6 +475,6 @@@ static int crypto_user_rcv_msg(struct s
        type -= CRYPTO_MSG_BASE;
        link = &crypto_dispatch[type];
  
-       if (!netlink_capable(skb, CAP_NET_ADMIN))
-               return -EPERM;
        if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) &&
            (nlh->nlmsg_flags & NLM_F_DUMP))) {
                struct crypto_alg *alg;
index 244759bbd7b73d0aa3015c915654abd35ac7a193,38cfae686cc471b71646ab76d6d2ee599ab90fd6..836b061ced356fc099625973cb1a77003b9a0b90
@@@ -2,7 -2,7 +2,7 @@@
  # Hardware Random Number Generator (RNG) configuration
  #
  
- config HW_RANDOM
menuconfig HW_RANDOM
        tristate "Hardware Random Number Generator Core support"
        default m
        ---help---
  
          If unsure, say Y.
  
+ if HW_RANDOM
  config HW_RANDOM_TIMERIOMEM
        tristate "Timer IOMEM HW Random Number Generator support"
-       depends on HW_RANDOM && HAS_IOMEM
+       depends on HAS_IOMEM
        ---help---
          This driver provides kernel-side support for a generic Random
          Number Generator used by reading a 'dumb' iomem address that
@@@ -36,7 -38,7 +38,7 @@@
  
  config HW_RANDOM_INTEL
        tristate "Intel HW Random Number Generator support"
-       depends on HW_RANDOM && (X86 || IA64) && PCI
+       depends on (X86 || IA64) && PCI
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
@@@ -49,7 -51,7 +51,7 @@@
  
  config HW_RANDOM_AMD
        tristate "AMD HW Random Number Generator support"
-       depends on HW_RANDOM && (X86 || PPC_MAPLE) && PCI
+       depends on (X86 || PPC_MAPLE) && PCI
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
@@@ -62,8 -64,8 +64,8 @@@
  
  config HW_RANDOM_ATMEL
        tristate "Atmel Random Number Generator support"
-       depends on HW_RANDOM && HAVE_CLK
-       default (HW_RANDOM && ARCH_AT91)
+       depends on ARCH_AT91 && HAVE_CLK
+       default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          Generator hardware found on Atmel AT91 devices.
@@@ -75,7 -77,7 +77,7 @@@
  
  config HW_RANDOM_BCM63XX
        tristate "Broadcom BCM63xx Random Number Generator support"
-       depends on HW_RANDOM && BCM63XX
+       depends on BCM63XX
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
@@@ -88,7 -90,7 +90,7 @@@
  
  config HW_RANDOM_BCM2835
        tristate "Broadcom BCM2835 Random Number Generator support"
-       depends on HW_RANDOM && ARCH_BCM2835
+       depends on ARCH_BCM2835
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_GEODE
        tristate "AMD Geode HW Random Number Generator support"
-       depends on HW_RANDOM && X86_32 && PCI
+       depends on X86_32 && PCI
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_N2RNG
        tristate "Niagara2 Random Number Generator support"
-       depends on HW_RANDOM && SPARC64
+       depends on SPARC64
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_VIA
        tristate "VIA HW Random Number Generator support"
-       depends on HW_RANDOM && X86
+       depends on X86
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_IXP4XX
        tristate "Intel IXP4xx NPU HW Pseudo-Random Number Generator support"
-       depends on HW_RANDOM && ARCH_IXP4XX
+       depends on ARCH_IXP4XX
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Pseudo-Random
  
  config HW_RANDOM_OMAP
        tristate "OMAP Random Number Generator support"
-       depends on HW_RANDOM && (ARCH_OMAP16XX || ARCH_OMAP2PLUS)
+       depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_OMAP3_ROM
        tristate "OMAP3 ROM Random Number Generator support"
-       depends on HW_RANDOM && ARCH_OMAP3
+       depends on ARCH_OMAP3
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_OCTEON
        tristate "Octeon Random Number Generator support"
-       depends on HW_RANDOM && CAVIUM_OCTEON_SOC
+       depends on CAVIUM_OCTEON_SOC
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_PASEMI
        tristate "PA Semi HW Random Number Generator support"
-       depends on HW_RANDOM && PPC_PASEMI
+       depends on PPC_PASEMI
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_VIRTIO
        tristate "VirtIO Random Number Generator support"
-       depends on HW_RANDOM && VIRTIO
+       depends on VIRTIO
        ---help---
          This driver provides kernel-side support for the virtual Random Number
          Generator hardware.
  
  config HW_RANDOM_TX4939
        tristate "TX4939 Random Number Generator support"
-       depends on HW_RANDOM && SOC_TX4939
+       depends on SOC_TX4939
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_MXC_RNGA
        tristate "Freescale i.MX RNGA Random Number Generator"
-       depends on HW_RANDOM && ARCH_HAS_RNGA
+       depends on ARCH_HAS_RNGA
+       default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          Generator hardware found on Freescale i.MX processors.
  
  config HW_RANDOM_NOMADIK
        tristate "ST-Ericsson Nomadik Random Number Generator support"
-       depends on HW_RANDOM && ARCH_NOMADIK
+       depends on ARCH_NOMADIK
+       default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          Generator hardware found on ST-Ericsson SoCs (8815 and 8500).
  
          If unsure, say Y.
  
- config HW_RANDOM_PICOXCELL
-       tristate "Picochip picoXcell true random number generator support"
-       depends on HW_RANDOM && ARCH_PICOXCELL && PICOXCELL_PC3X3
-       ---help---
-         This driver provides kernel-side support for the Random Number
-         Generator hardware found on Picochip PC3x3 and later devices.
-         To compile this driver as a module, choose M here: the
-         module will be called picoxcell-rng.
-         If unsure, say Y.
  config HW_RANDOM_PPC4XX
        tristate "PowerPC 4xx generic true random number generator support"
-       depends on HW_RANDOM && PPC && 4xx
+       depends on PPC && 4xx
+       default HW_RANDOM
        ---help---
         This driver provides the kernel-side support for the TRNG hardware
         found in the security function of some PowerPC 4xx SoCs.
  
         If unsure, say N.
  
- config UML_RANDOM
-       depends on UML
-       tristate "Hardware random number generator"
-       help
-         This option enables UML's "hardware" random number generator.  It
-         attaches itself to the host's /dev/random, supplying as much entropy
-         as the host has, rather than the small amount the UML gets from its
-         own drivers.  It registers itself as a standard hardware random number
-         generator, major 10, minor 183, and the canonical device name is
-         /dev/hwrng.
-         The way to make use of this is to install the rng-tools package
-         (check your distro, or download from
-         http://sourceforge.net/projects/gkernel/).  rngd periodically reads
-         /dev/hwrng and injects the entropy into /dev/random.
  config HW_RANDOM_PSERIES
        tristate "pSeries HW Random Number Generator support"
-       depends on HW_RANDOM && PPC64 && IBMVIO
+       depends on PPC64 && IBMVIO
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
  
  config HW_RANDOM_POWERNV
        tristate "PowerNV Random Number Generator support"
-       depends on HW_RANDOM && PPC_POWERNV
+       depends on PPC_POWERNV
        default HW_RANDOM
        ---help---
          This is the driver for Random Number Generator hardware found
  
  config HW_RANDOM_EXYNOS
        tristate "EXYNOS HW random number generator support"
-       depends on HW_RANDOM && HAS_IOMEM && HAVE_CLK
+       depends on ARCH_EXYNOS
+       default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          Generator hardware found on EXYNOS SOCs.
  
  config HW_RANDOM_TPM
        tristate "TPM HW Random Number Generator support"
-       depends on HW_RANDOM && TCG_TPM
+       depends on TCG_TPM
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          If unsure, say Y.
  
  config HW_RANDOM_MSM
 -      tristate "Qualcomm MSM Random Number Generator support"
 -      depends on ARCH_MSM
 +      tristate "Qualcomm SoCs Random Number Generator support"
 +      depends on HW_RANDOM && ARCH_QCOM
+       default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
 -        Generator hardware found on Qualcomm MSM SoCs.
 +        Generator hardware found on Qualcomm SoCs.
  
          To compile this driver as a module, choose M here. the
          module will be called msm-rng.
  
          If unsure, say Y.
+ endif # HW_RANDOM
+ config UML_RANDOM
+       depends on UML
+       tristate "Hardware random number generator"
+       help
+         This option enables UML's "hardware" random number generator.  It
+         attaches itself to the host's /dev/random, supplying as much entropy
+         as the host has, rather than the small amount the UML gets from its
+         own drivers.  It registers itself as a standard hardware random number
+         generator, major 10, minor 183, and the canonical device name is
+         /dev/hwrng.
+         The way to make use of this is to install the rng-tools package
+         (check your distro, or download from
+         http://sourceforge.net/projects/gkernel/).  rngd periodically reads
+         /dev/hwrng and injects the entropy into /dev/random.
index 5ce8b576512106656fc9d38571a36107d9f3f2bc,c4fcbf47475f59113df1a9c6f6366416e40dedeb..502edf0a29332a5e9af8bbe362c6b5deccc62568
@@@ -1197,7 -1197,12 +1197,7 @@@ static int __init nx842_probe(struct vi
        }
  
        rcu_read_lock();
 -      if (dev_set_drvdata(&viodev->dev, rcu_dereference(devdata))) {
 -              rcu_read_unlock();
 -              dev_err(&viodev->dev, "failed to set driver data for device\n");
 -              ret = -1;
 -              goto error;
 -      }
 +      dev_set_drvdata(&viodev->dev, rcu_dereference(devdata));
        rcu_read_unlock();
  
        if (sysfs_create_group(&viodev->dev.kobj, &nx842_attribute_group)) {
@@@ -1229,7 -1234,7 +1229,7 @@@ static int __exit nx842_remove(struct v
        old_devdata = rcu_dereference_check(devdata,
                        lockdep_is_held(&devdata_mutex));
        of_reconfig_notifier_unregister(&nx842_of_nb);
-       rcu_assign_pointer(devdata, NULL);
+       RCU_INIT_POINTER(devdata, NULL);
        spin_unlock_irqrestore(&devdata_mutex, flags);
        synchronize_rcu();
        dev_set_drvdata(&viodev->dev, NULL);
@@@ -1280,7 -1285,7 +1280,7 @@@ static void __exit nx842_exit(void
        spin_lock_irqsave(&devdata_mutex, flags);
        old_devdata = rcu_dereference_check(devdata,
                        lockdep_is_held(&devdata_mutex));
-       rcu_assign_pointer(devdata, NULL);
+       RCU_INIT_POINTER(devdata, NULL);
        spin_unlock_irqrestore(&devdata_mutex, flags);
        synchronize_rcu();
        if (old_devdata)