* [PATCH 0/2] sun4i_ss_prng fixes
@ 2018-02-06 21:20 Artem Savkov
2018-02-06 21:20 ` [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate Artem Savkov
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Artem Savkov @ 2018-02-06 21:20 UTC (permalink / raw)
To: linux-arm-kernel
IPSec hasn't been working on my a10 board since 4.14 and it turned out to be
caused by sun4i_ss_rng driver.
Artem Savkov (2):
sun4i_ss_prng: fix return value of sun4i_ss_prng_generate
sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate
drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--
2.15.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate 2018-02-06 21:20 [PATCH 0/2] sun4i_ss_prng fixes Artem Savkov @ 2018-02-06 21:20 ` Artem Savkov 2018-02-07 9:56 ` Corentin Labbe 2018-02-06 21:20 ` [PATCH 2/2] sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate Artem Savkov 2018-02-09 15:51 ` [PATCH 0/2] sun4i_ss_prng fixes Herbert Xu 2 siblings, 1 reply; 7+ messages in thread From: Artem Savkov @ 2018-02-06 21:20 UTC (permalink / raw) To: linux-arm-kernel According to crypto/rng.h generate function should return 0 on success and < 0 on error. Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG") Signed-off-by: Artem Savkov <artem.savkov@gmail.com> --- drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c index 0d01d1624252..5754e0b92fb0 100644 --- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c +++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c @@ -52,5 +52,5 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, writel(0, ss->base + SS_CTL); spin_unlock(&ss->slock); - return dlen; + return 0; } -- 2.15.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate 2018-02-06 21:20 ` [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate Artem Savkov @ 2018-02-07 9:56 ` Corentin Labbe 2018-02-07 10:52 ` Artem Savkov 0 siblings, 1 reply; 7+ messages in thread From: Corentin Labbe @ 2018-02-07 9:56 UTC (permalink / raw) To: linux-arm-kernel On Tue, Feb 06, 2018 at 10:20:21PM +0100, Artem Savkov wrote: > According to crypto/rng.h generate function should return 0 on success > and < 0 on error. > > Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG") > Signed-off-by: Artem Savkov <artem.savkov@gmail.com> > --- > drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > index 0d01d1624252..5754e0b92fb0 100644 > --- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > +++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > @@ -52,5 +52,5 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, > > writel(0, ss->base + SS_CTL); > spin_unlock(&ss->slock); > - return dlen; > + return 0; > } > -- > 2.15.1 > According to Documentation/crypto/api-samples.rst ("Code Example For Random Number Generator Usage") you must return the length of data generated. So crypto_rng_generate/crypto_rng_get_bytes documentation in crypto/rng.h must be fixed. Herbert could you confirm ? Regards ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate 2018-02-07 9:56 ` Corentin Labbe @ 2018-02-07 10:52 ` Artem Savkov 2018-02-07 13:12 ` Corentin Labbe 0 siblings, 1 reply; 7+ messages in thread From: Artem Savkov @ 2018-02-07 10:52 UTC (permalink / raw) To: linux-arm-kernel On Wed, Feb 07, 2018 at 10:56:59AM +0100, Corentin Labbe wrote: > On Tue, Feb 06, 2018 at 10:20:21PM +0100, Artem Savkov wrote: > > According to crypto/rng.h generate function should return 0 on success > > and < 0 on error. > > > > Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG") > > Signed-off-by: Artem Savkov <artem.savkov@gmail.com> > > --- > > drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > index 0d01d1624252..5754e0b92fb0 100644 > > --- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > +++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > @@ -52,5 +52,5 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, > > > > writel(0, ss->base + SS_CTL); > > spin_unlock(&ss->slock); > > - return dlen; > > + return 0; > > } > > -- > > 2.15.1 > > > > According to Documentation/crypto/api-samples.rst ("Code Example For Random Number Generator Usage") > you must return the length of data generated. I don't think that example is the same as rng_alg.generate, it has a different protottype. > So crypto_rng_generate/crypto_rng_get_bytes documentation in crypto/rng.h must be fixed. It's not just documentation, every other rng driver returns it this way and it gets aead_init_geniv() (and subsequently crypto_create_tfm()) really confused because they expect the return value to be 0 or < 0. > Herbert could you confirm ? -- Regards, Artem ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate 2018-02-07 10:52 ` Artem Savkov @ 2018-02-07 13:12 ` Corentin Labbe 0 siblings, 0 replies; 7+ messages in thread From: Corentin Labbe @ 2018-02-07 13:12 UTC (permalink / raw) To: linux-arm-kernel On Wed, Feb 07, 2018 at 11:52:01AM +0100, Artem Savkov wrote: > On Wed, Feb 07, 2018 at 10:56:59AM +0100, Corentin Labbe wrote: > > On Tue, Feb 06, 2018 at 10:20:21PM +0100, Artem Savkov wrote: > > > According to crypto/rng.h generate function should return 0 on success > > > and < 0 on error. > > > > > > Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG") > > > Signed-off-by: Artem Savkov <artem.savkov@gmail.com> > > > --- > > > drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > > index 0d01d1624252..5754e0b92fb0 100644 > > > --- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > > +++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c > > > @@ -52,5 +52,5 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, > > > > > > writel(0, ss->base + SS_CTL); > > > spin_unlock(&ss->slock); > > > - return dlen; > > > + return 0; > > > } > > > -- > > > 2.15.1 > > > > > > > According to Documentation/crypto/api-samples.rst ("Code Example For Random Number Generator Usage") > > you must return the length of data generated. > > I don't think that example is the same as rng_alg.generate, it has a > different protottype. crypto_rng_get_bytes() use crypto_rng_generate() which work on crypto_rng > > > So crypto_rng_generate/crypto_rng_get_bytes documentation in crypto/rng.h must be fixed. > > It's not just documentation, every other rng driver returns it this way > and it gets aead_init_geniv() (and subsequently crypto_create_tfm()) > really confused because they expect the return value to be 0 or < 0. > Perhaps the example is wrong because "copied from/inspirated by" hwrng API which have this behavior. After checking, other crypto_rng driver, you are probably right, so you can add: Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com> Thanks Regards ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate 2018-02-06 21:20 [PATCH 0/2] sun4i_ss_prng fixes Artem Savkov 2018-02-06 21:20 ` [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate Artem Savkov @ 2018-02-06 21:20 ` Artem Savkov 2018-02-09 15:51 ` [PATCH 0/2] sun4i_ss_prng fixes Herbert Xu 2 siblings, 0 replies; 7+ messages in thread From: Artem Savkov @ 2018-02-06 21:20 UTC (permalink / raw) To: linux-arm-kernel Lockdep detects a possible deadlock in sun4i_ss_prng_generate() and throws an "inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage" warning. Disabling softirqs to fix this. Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG") Signed-off-by: Artem Savkov <artem.savkov@gmail.com> --- drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c index 5754e0b92fb0..63d636424161 100644 --- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c +++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c @@ -28,7 +28,7 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, algt = container_of(alg, struct sun4i_ss_alg_template, alg.rng); ss = algt->ss; - spin_lock(&ss->slock); + spin_lock_bh(&ss->slock); writel(mode, ss->base + SS_CTL); @@ -51,6 +51,6 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, } writel(0, ss->base + SS_CTL); - spin_unlock(&ss->slock); + spin_unlock_bh(&ss->slock); return 0; } -- 2.15.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 0/2] sun4i_ss_prng fixes 2018-02-06 21:20 [PATCH 0/2] sun4i_ss_prng fixes Artem Savkov 2018-02-06 21:20 ` [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate Artem Savkov 2018-02-06 21:20 ` [PATCH 2/2] sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate Artem Savkov @ 2018-02-09 15:51 ` Herbert Xu 2 siblings, 0 replies; 7+ messages in thread From: Herbert Xu @ 2018-02-09 15:51 UTC (permalink / raw) To: linux-arm-kernel On Tue, Feb 06, 2018 at 10:20:20PM +0100, Artem Savkov wrote: > IPSec hasn't been working on my a10 board since 4.14 and it turned out to be > caused by sun4i_ss_rng driver. > > Artem Savkov (2): > sun4i_ss_prng: fix return value of sun4i_ss_prng_generate > sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate > > drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) All applied. Thanks. -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-02-09 15:51 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-06 21:20 [PATCH 0/2] sun4i_ss_prng fixes Artem Savkov 2018-02-06 21:20 ` [PATCH 1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate Artem Savkov 2018-02-07 9:56 ` Corentin Labbe 2018-02-07 10:52 ` Artem Savkov 2018-02-07 13:12 ` Corentin Labbe 2018-02-06 21:20 ` [PATCH 2/2] sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate Artem Savkov 2018-02-09 15:51 ` [PATCH 0/2] sun4i_ss_prng fixes Herbert Xu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).