Hello Rob Rice,

The patch 9d12ba86f818: "crypto: brcm - Add Broadcom SPU driver" from
Feb 3, 2017, leads to the following static checker warning:

        drivers/crypto/bcm/cipher.c:2340 ahash_finup()
        warn: 'tmpbuf' was already freed.

drivers/crypto/bcm/cipher.c
  2316                  /* Copy data from req scatterlist to tmp buffer */
  2317                  gfp = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG |
  2318                         CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : 
GFP_ATOMIC;
  2319                  tmpbuf = kmalloc(req->nbytes, gfp);
  2320                  if (!tmpbuf) {
  2321                          ret = -ENOMEM;
  2322                          goto ahash_finup_exit;
  2323                  }
  2324  
  2325                  if (sg_copy_to_buffer(req->src, nents, tmpbuf, 
req->nbytes) !=
  2326                                  req->nbytes) {
  2327                          ret = -EINVAL;
  2328                          goto ahash_finup_free;
  2329                  }
  2330  
  2331                  /* Call synchronous update */
  2332                  ret = crypto_shash_finup(ctx->shash, tmpbuf, 
req->nbytes,
  2333                                           req->result);
  2334                  kfree(tmpbuf);
                        ^^^^^^^^^^^^^
  2335          } else {
  2336                  /* Otherwise call the internal function which uses SPU 
hw */
  2337                  return __ahash_finup(req);
  2338          }
  2339  ahash_finup_free:
  2340          kfree(tmpbuf);
                ^^^^^^^^^^^^^
I'm only working a 30 minutes per day to keep a hand in.  I'm not
sending patches this month.

  2341  
  2342  ahash_finup_exit:
  2343          /* Done with hash, can deallocate it now */
  2344          crypto_free_shash(ctx->shash->tfm);
  2345          kfree(ctx->shash);
  2346          return ret;
  2347  }

regards,
dan carpenter

Reply via email to