All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sumit Garg <sumit.garg@linaro.org>
To: kbuild-all@lists.01.org
Subject: Re: [jss-tpmdd:master 16/16] security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
Date: Tue, 15 Oct 2019 13:55:42 +0530	[thread overview]
Message-ID: <CAFA6WYPoWgK=A4ROyV3sgbqZzOC9LgTvRpin_4SpYv4P0U9Wag@mail.gmail.com> (raw)
In-Reply-To: <20191014184640.GB13238@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 19728 bytes --]

On Tue, 15 Oct 2019 at 00:16, Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> wrote:
>
> On Sat, Oct 12, 2019 at 09:35:26AM +0800, kbuild test robot wrote:
> > Hi Sumit,
> >
> > First bad commit (maybe != root cause):
> >
> > tree:   git://git.infradead.org/users/jjs/linux-tpmdd master
> > head:   2feacb45cc29cf4fbb3783372ca096ea4d4fd761
> > commit: 2feacb45cc29cf4fbb3783372ca096ea4d4fd761 [16/16] KEYS: trusted: Create trusted keys subsystem
> > reproduce:
> >         # apt-get install sparse
> >         # sparse version: v0.6.1-rc1-42-g38eda53-dirty
> >         git checkout 2feacb45cc29cf4fbb3783372ca096ea4d4fd761
> >         make ARCH=x86_64 allmodconfig
> >         make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@intel.com>
> >
> >
> > sparse warnings: (new ones prefixed by >>)
> >
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:202:15: sparse: sparse: cast to restricted __be16
> > >> security/keys/trusted-keys/trusted_tpm1.c:202:15: sparse: sparse: cast to restricted __be16
> > >> security/keys/trusted-keys/trusted_tpm1.c:202:15: sparse: sparse: cast to restricted __be16
> > >> security/keys/trusted-keys/trusted_tpm1.c:202:15: sparse: sparse: cast to restricted __be16
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:289:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:290:15: sparse: sparse: cast to restricted __be16
> >    security/keys/trusted-keys/trusted_tpm1.c:290:15: sparse: sparse: cast to restricted __be16
> >    security/keys/trusted-keys/trusted_tpm1.c:290:15: sparse: sparse: cast to restricted __be16
> >    security/keys/trusted-keys/trusted_tpm1.c:290:15: sparse: sparse: cast to restricted __be16
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:418:21: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:442:19: sparse: sparse: cast to restricted __be32
> > >> security/keys/trusted-keys/trusted_tpm1.c:501:17: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [usertype] ordinal @@    got restrunsigned int [usertype] ordinal @@
> > >> security/keys/trusted-keys/trusted_tpm1.c:501:17: sparse:    expected unsigned int [usertype] ordinal
> > >> security/keys/trusted-keys/trusted_tpm1.c:501:17: sparse:    got restricted __be32 [usertype]
> > >> security/keys/trusted-keys/trusted_tpm1.c:502:17: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [usertype] datsize @@    got restrunsigned int [usertype] datsize @@
> > >> security/keys/trusted-keys/trusted_tpm1.c:502:17: sparse:    expected unsigned int [usertype] datsize
> >    security/keys/trusted-keys/trusted_tpm1.c:502:17: sparse:    got restricted __be32 [usertype]
> > >> security/keys/trusted-keys/trusted_tpm1.c:503:17: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [usertype] pcrsize @@    got restrunsigned int [usertype] pcrsize @@
> > >> security/keys/trusted-keys/trusted_tpm1.c:503:17: sparse:    expected unsigned int [usertype] pcrsize
> >    security/keys/trusted-keys/trusted_tpm1.c:503:17: sparse:    got restricted __be32 [usertype]
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:549:24: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:550:23: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:603:17: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [usertype] ordinal @@    got restrunsigned int [usertype] ordinal @@
> >    security/keys/trusted-keys/trusted_tpm1.c:603:17: sparse:    expected unsigned int [usertype] ordinal
> >    security/keys/trusted-keys/trusted_tpm1.c:603:17: sparse:    got restricted __be32 [usertype]
> > >> security/keys/trusted-keys/trusted_tpm1.c:604:17: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [usertype] keyhndl @@    got restrunsigned int [usertype] keyhndl @@
> > >> security/keys/trusted-keys/trusted_tpm1.c:604:17: sparse:    expected unsigned int [usertype] keyhndl
> >    security/keys/trusted-keys/trusted_tpm1.c:604:17: sparse:    got restricted __be32 [usertype]
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    security/keys/trusted-keys/trusted_tpm1.c:640:20: sparse: sparse: cast to restricted __be32
> >    include/linux/tpm.h:318:9: sparse: sparse: incorrect type in argument 1 (different base types) @@    expected unsigned long addr @@    got unsigned chaunsigned long addr @@
> >    include/linux/tpm.h:318:9: sparse:    expected unsigned long addr
> >    include/linux/tpm.h:318:9: sparse:    got unsigned char [usertype] *data
> >    include/linux/tpm.h:318:9: sparse: sparse: incorrect type in argument 1 (different base types) @@    expected unsigned long addr @@    got unsigned chaunsigned long addr @@
> >    include/linux/tpm.h:318:9: sparse:    expected unsigned long addr
> >    include/linux/tpm.h:318:9: sparse:    got unsigned char [usertype] *data
> >
> > vim +201 security/keys/trusted-keys/trusted_tpm1.c
> >
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  173
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  174  /*
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  175   * verify the AUTH1_COMMAND (Seal) result from TPM
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  176   */
> > e1ea9f86023e76 security/keys/trusted.c         Denis Kenzior   2018-10-09  177  int TSS_checkhmac1(unsigned char *buffer,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  178                          const uint32_t command,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  179                          const unsigned char *ononce,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  180                          const unsigned char *key,
> > 1bdbb4024c309e security/keys/trusted_defined.c Mimi Zohar      2010-12-13  181                          unsigned int keylen, ...)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  182  {
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  183        uint32_t bufsize;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  184        uint16_t tag;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  185        uint32_t ordinal;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  186        uint32_t result;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  187        unsigned char *enonce;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  188        unsigned char *continueflag;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  189        unsigned char *authdata;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  190        unsigned char testhmac[SHA1_DIGEST_SIZE];
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  191        unsigned char paramdigest[SHA1_DIGEST_SIZE];
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  192        struct sdesc *sdesc;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  193        unsigned int dlen;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  194        unsigned int dpos;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  195        va_list argp;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  196        int ret;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  197
> > c78719203fc629 security/keys/trusted.c         Jarkko Sakkinen 2019-03-25  198        if (!chip)
> > c78719203fc629 security/keys/trusted.c         Jarkko Sakkinen 2019-03-25  199                return -ENODEV;
> > c78719203fc629 security/keys/trusted.c         Jarkko Sakkinen 2019-03-25  200
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23 @201        bufsize = LOAD32(buffer, TPM_SIZE_OFFSET);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23 @202        tag = LOAD16(buffer, 0);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  203        ordinal = command;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  204        result = LOAD32N(buffer, TPM_RETURN_OFFSET);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  205        if (tag == TPM_TAG_RSP_COMMAND)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  206                return 0;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  207        if (tag != TPM_TAG_RSP_AUTH1_COMMAND)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  208                return -EINVAL;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  209        authdata = buffer + bufsize - SHA1_DIGEST_SIZE;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  210        continueflag = authdata - 1;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  211        enonce = continueflag - TPM_NONCE_SIZE;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  212
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  213        sdesc = init_sdesc(hashalg);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  214        if (IS_ERR(sdesc)) {
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  215                pr_info("trusted_key: can't alloc %s\n", hash_alg);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  216                return PTR_ERR(sdesc);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  217        }
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  218        ret = crypto_shash_init(&sdesc->shash);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  219        if (ret < 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  220                goto out;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  221        ret = crypto_shash_update(&sdesc->shash, (const u8 *)&result,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  222                                  sizeof result);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  223        if (ret < 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  224                goto out;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  225        ret = crypto_shash_update(&sdesc->shash, (const u8 *)&ordinal,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  226                                  sizeof ordinal);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  227        if (ret < 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  228                goto out;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  229        va_start(argp, keylen);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  230        for (;;) {
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  231                dlen = va_arg(argp, unsigned int);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  232                if (dlen == 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  233                        break;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  234                dpos = va_arg(argp, unsigned int);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  235                ret = crypto_shash_update(&sdesc->shash, buffer + dpos, dlen);
> > 154a96bfcd53b8 security/keys/trusted_defined.c Tetsuo Handa    2011-01-17  236                if (ret < 0)
> > 154a96bfcd53b8 security/keys/trusted_defined.c Tetsuo Handa    2011-01-17  237                        break;
> > bc5e0af0b36b6c security/keys/trusted_defined.c Mimi Zohar      2010-12-13  238        }
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  239        va_end(argp);
> > 154a96bfcd53b8 security/keys/trusted_defined.c Tetsuo Handa    2011-01-17  240        if (!ret)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  241                ret = crypto_shash_final(&sdesc->shash, paramdigest);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  242        if (ret < 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  243                goto out;
> > bc5e0af0b36b6c security/keys/trusted_defined.c Mimi Zohar      2010-12-13  244
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  245        ret = TSS_rawhmac(testhmac, key, keylen, SHA1_DIGEST_SIZE, paramdigest,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  246                          TPM_NONCE_SIZE, enonce, TPM_NONCE_SIZE, ononce,
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  247                          1, continueflag, 0, 0);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  248        if (ret < 0)
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  249                goto out;
> > bc5e0af0b36b6c security/keys/trusted_defined.c Mimi Zohar      2010-12-13  250
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  251        if (memcmp(testhmac, authdata, SHA1_DIGEST_SIZE))
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  252                ret = -EINVAL;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  253  out:
> > ee618b4619b725 security/keys/trusted.c         Eric Biggers    2017-06-08  254        kzfree(sdesc);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  255        return ret;
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  256  }
> > e1ea9f86023e76 security/keys/trusted.c         Denis Kenzior   2018-10-09  257  EXPORT_SYMBOL_GPL(TSS_checkhmac1);
> > d00a1c72f7f466 security/keys/trusted_defined.c Mimi Zohar      2010-11-23  258
> >
> > :::::: The code at line 201 was first introduced by commit
> > :::::: d00a1c72f7f4661212299e6cb132dfa58030bcdb keys: add new trusted key-type
> >
> > :::::: TO: Mimi Zohar <zohar@linux.vnet.ibm.com>
> > :::::: CC: James Morris <jmorris@namei.org>
> >
> > ---
> > 0-DAY kernel test infrastructure                Open Source Technology Center
> > https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>
> Sumit, can you send a one more iteration with fixes for kbuild issues?
> I'm taking off the existing commits.
>

These kbuild issues aren't caused by "KEYS: trusted: Create trusted
keys subsystem" as this commit only did a rename from
"security/keys/trusted.c" ->
"security/keys/trusted-keys/trusted_tpm1.c".

So I think there should be a separate patch to fix all the sparse
issues that existed in "security/keys/trusted.c" rather than updating
this patch.

-Sumit

> /Jarkko

      reply	other threads:[~2019-10-15  8:25 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-12  1:35 [jss-tpmdd:master 16/16] security/keys/trusted-keys/trusted_tpm1.c:201:19: sparse: sparse: cast to restricted __be32 kbuild test robot
2019-10-14 18:46 ` Jarkko Sakkinen
2019-10-15  8:25   ` Sumit Garg [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFA6WYPoWgK=A4ROyV3sgbqZzOC9LgTvRpin_4SpYv4P0U9Wag@mail.gmail.com' \
    --to=sumit.garg@linaro.org \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.