lkml.org 
[lkml]   [2021]   [Jul]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/9] crypto: atmel-tdes: Clarify how tdes dev gets allocated to the tfm
    Date
    The tdes dev gets allocated to the tfm at alg->init time, there's no
    need to overwrite the pointer to tdes_dd afterwards.
    There's a single IP per SoC anyway, the first entry from the
    atmel_tdes.dev_list is chosen without counting for tfms for example,
    in case one thinks of an even distribution of tfms across the TDES
    IPs: there's only one. At alg->init time the ctx->dd should already
    be NULL, there's no need to check its value before requesting for a
    tdes dev.

    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    ---
    drivers/crypto/atmel-tdes.c | 28 +++++++++-------------------
    1 file changed, 9 insertions(+), 19 deletions(-)

    diff --git a/drivers/crypto/atmel-tdes.c b/drivers/crypto/atmel-tdes.c
    index 6f01c51e3c37..dda70dbe0838 100644
    --- a/drivers/crypto/atmel-tdes.c
    +++ b/drivers/crypto/atmel-tdes.c
    @@ -196,23 +196,15 @@ static void atmel_tdes_write_n(struct atmel_tdes_dev *dd, u32 offset,
    atmel_tdes_write(dd, offset, *value);
    }

    -static struct atmel_tdes_dev *atmel_tdes_find_dev(struct atmel_tdes_ctx *ctx)
    +static struct atmel_tdes_dev *atmel_tdes_dev_alloc(void)
    {
    - struct atmel_tdes_dev *tdes_dd = NULL;
    - struct atmel_tdes_dev *tmp;
    + struct atmel_tdes_dev *tdes_dd;

    spin_lock_bh(&atmel_tdes.lock);
    - if (!ctx->dd) {
    - list_for_each_entry(tmp, &atmel_tdes.dev_list, list) {
    - tdes_dd = tmp;
    - break;
    - }
    - ctx->dd = tdes_dd;
    - } else {
    - tdes_dd = ctx->dd;
    - }
    + /* One TDES IP per SoC. */
    + tdes_dd = list_first_entry_or_null(&atmel_tdes.dev_list,
    + struct atmel_tdes_dev, list);
    spin_unlock_bh(&atmel_tdes.lock);
    -
    return tdes_dd;
    }

    @@ -646,7 +638,6 @@ static int atmel_tdes_handle_queue(struct atmel_tdes_dev *dd,
    rctx->mode &= TDES_FLAGS_MODE_MASK;
    dd->flags = (dd->flags & ~TDES_FLAGS_MODE_MASK) | rctx->mode;
    dd->ctx = ctx;
    - ctx->dd = dd;

    err = atmel_tdes_write_ctrl(dd);
    if (!err)
    @@ -897,14 +888,13 @@ static int atmel_tdes_ofb_decrypt(struct skcipher_request *req)
    static int atmel_tdes_init_tfm(struct crypto_skcipher *tfm)
    {
    struct atmel_tdes_ctx *ctx = crypto_skcipher_ctx(tfm);
    - struct atmel_tdes_dev *dd;
    -
    - crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_tdes_reqctx));

    - dd = atmel_tdes_find_dev(ctx);
    - if (!dd)
    + ctx->dd = atmel_tdes_dev_alloc();
    + if (!ctx->dd)
    return -ENODEV;

    + crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_tdes_reqctx));
    +
    return 0;
    }

    --
    2.25.1
    \
     
     \ /
      Last update: 2021-07-20 10:59    [W:2.719 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site