All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv6 00/12] nvme: In-band authentication support
@ 2021-11-22  7:47 Hannes Reinecke
  2021-11-22  7:47 ` [PATCH 01/12] crypto: add crypto_has_shash() Hannes Reinecke
                   ` (12 more replies)
  0 siblings, 13 replies; 73+ messages in thread
From: Hannes Reinecke @ 2021-11-22  7:47 UTC (permalink / raw)
  To: Sagi Grimberg
  Cc: Christoph Hellwig, Keith Busch, linux-nvme, Herbert Xu,
	David Miller, linux-crypto, Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

Tricky bit here is that the specification orients itself on TLS 1.3,
but supports only the FFDHE groups. Which of course the kernel doesn't
support. I've been able to come up with a patch for this, but as this
is my first attempt to fix anything in the crypto area I would invite
people more familiar with these matters to have a look.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

As usual, comments and reviews are welcome.

Changes to v5:
- Unify nvme_auth_generate_key()
- Unify nvme_auth_extract_key()
- Include reviews from Sagi

Changes to v4:
- Validate against blktest suite
- Fixup base64 decoding
- Transform secret with correct hmac algorithm

Changes to v3:
- Renamed parameter to 'dhchap_ctrl_key'
- Fixed bi-directional authentication
- Included reviews from Sagi
- Fixed base64 algorithm for transport encoding

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: Parse fabrics commands on all queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 ++++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   12 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1539 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   34 +
 drivers/nvme/host/core.c               |  141 ++-
 drivers/nvme/host/fabrics.c            |   83 +-
 drivers/nvme/host/fabrics.h            |    7 +
 drivers/nvme/host/nvme.h               |   35 +
 drivers/nvme/host/tcp.c                |    1 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   13 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    4 +
 drivers/nvme/target/auth.c             |  529 ++++++++
 drivers/nvme/target/configfs.c         |  138 ++-
 drivers/nvme/target/core.c             |   10 +
 drivers/nvme/target/fabrics-cmd-auth.c |  513 ++++++++
 drivers/nvme/target/fabrics-cmd.c      |   30 +-
 drivers/nvme/target/nvmet.h            |   77 ++
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  186 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  103 ++
 31 files changed, 4424 insertions(+), 12 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 73+ messages in thread
* [PATCHv8 00/12] nvme: In-band authentication support
@ 2021-12-02 15:23 Hannes Reinecke
  2021-12-02 15:23 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
  0 siblings, 1 reply; 73+ messages in thread
From: Hannes Reinecke @ 2021-12-02 15:23 UTC (permalink / raw)
  To: Sagi Grimberg
  Cc: Christoph Hellwig, Keith Busch, linux-nvme, linux-crypto,
	Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

The ffdhe implementation given here is preliminary; there is a
patchset from Nicolai Stange to implement FFDHE as a 'real'
crypto algorithm, and also implements ephemeral keys for in-kernel DH.
Once that is merged I'll be updating this patchset.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

The nvme-cli support has already been merged; please use the latest
nvme-cli git repository to build the most recent version.

A copy of this patchset can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel
branch auth.v8

As usual, comments and reviews are welcome.

Changes to v7:
- Space out hash list and dhgroup list in nvme negotiate data
  to be conformant with the spec
- Update sequence number handling to start with a random value and
  ignore '0' as mandated by the spec
- Update nvme_auth_generate_key to return the key as suggested by Sagi
- Add nvmet_parse_fabrics_io_cmd() as suggested by hch

Changes to v6:
- Use 'u8' for DH group id and hash id
- Use 'struct nvme_dhchap_key'
- Rename variables to drop 'DHCHAP'
- Include reviews from Chaitanya

Changes to v5:
- Unify nvme_auth_generate_key()
- Unify nvme_auth_extract_key()
- Fixed bug where re-authentication with wrong controller key would not fail
- Include reviews from Sagi

Changes to v4:
- Validate against blktest suite
- Fixup base64 decoding
- Transform secret with correct hmac algorithm

Changes to v3:
- Renamed parameter to 'dhchap_ctrl_key'
- Fixed bi-directional authentication
- Included reviews from Sagi
- Fixed base64 algorithm for transport encoding

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: parse fabrics commands on io queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 +++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   12 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1569 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   42 +
 drivers/nvme/host/core.c               |  141 ++-
 drivers/nvme/host/fabrics.c            |   83 +-
 drivers/nvme/host/fabrics.h            |    7 +
 drivers/nvme/host/nvme.h               |   31 +
 drivers/nvme/host/rdma.c               |    1 +
 drivers/nvme/host/tcp.c                |    1 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   13 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    6 +-
 drivers/nvme/target/auth.c             |  523 ++++++++
 drivers/nvme/target/configfs.c         |  138 ++-
 drivers/nvme/target/core.c             |   15 +
 drivers/nvme/target/fabrics-cmd-auth.c |  534 ++++++++
 drivers/nvme/target/fabrics-cmd.c      |   55 +-
 drivers/nvme/target/nvmet.h            |   75 +-
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  188 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  103 ++
 32 files changed, 4503 insertions(+), 15 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 73+ messages in thread
* [PATCHv7 00/12] nvme: In-band authentication support
@ 2021-11-23 12:37 Hannes Reinecke
  2021-11-23 12:37 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
  0 siblings, 1 reply; 73+ messages in thread
From: Hannes Reinecke @ 2021-11-23 12:37 UTC (permalink / raw)
  To: Sagi Grimberg
  Cc: Christoph Hellwig, Keith Busch, linux-nvme, Herbert Xu,
	David Miller, linux-crypto, Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

Tricky bit here is that the specification orients itself on TLS 1.3,
but supports only the FFDHE groups. Which of course the kernel doesn't
support. I've been able to come up with a patch for this, but as this
is my first attempt to fix anything in the crypto area I would invite
people more familiar with these matters to have a look.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

As usual, comments and reviews are welcome.

Changes to v6:
- Use 'u8' for DH group id and hash id
- Use 'struct nvme_dhchap_key'
- Rename variables to drop 'DHCHAP'
- Include reviews from Chaitanya

Changes to v5:
- Unify nvme_auth_generate_key()
- Unify nvme_auth_extract_key()
- Fixed bug where re-authentication with wrong controller key would not fail
- Include reviews from Sagi

Changes to v4:
- Validate against blktest suite
- Fixup base64 decoding
- Transform secret with correct hmac algorithm

Changes to v3:
- Renamed parameter to 'dhchap_ctrl_key'
- Fixed bi-directional authentication
- Included reviews from Sagi
- Fixed base64 algorithm for transport encoding

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: Parse fabrics commands on all queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 ++++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   12 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1553 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   41 +
 drivers/nvme/host/core.c               |  141 ++-
 drivers/nvme/host/fabrics.c            |   83 +-
 drivers/nvme/host/fabrics.h            |    7 +
 drivers/nvme/host/nvme.h               |   31 +
 drivers/nvme/host/rdma.c               |    1 +
 drivers/nvme/host/tcp.c                |    1 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   13 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    4 +
 drivers/nvme/target/auth.c             |  525 ++++++++
 drivers/nvme/target/configfs.c         |  138 ++-
 drivers/nvme/target/core.c             |   10 +
 drivers/nvme/target/fabrics-cmd-auth.c |  513 ++++++++
 drivers/nvme/target/fabrics-cmd.c      |   30 +-
 drivers/nvme/target/nvmet.h            |   73 ++
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  188 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  103 ++
 32 files changed, 4436 insertions(+), 12 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 73+ messages in thread
* Re: [PATCH 07/12] nvme: Implement In-Band authentication
@ 2021-11-20 21:09 kernel test robot
  0 siblings, 0 replies; 73+ messages in thread
From: kernel test robot @ 2021-11-20 21:09 UTC (permalink / raw)
  To: kbuild

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20211112125928.97318-8-hare@suse.de>
References: <20211112125928.97318-8-hare@suse.de>
TO: Hannes Reinecke <hare@suse.de>

Hi Hannes,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.16-rc1 next-20211118]
[cannot apply to herbert-cryptodev-2.6/master herbert-crypto-2.6/master linux-nvme/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Hannes-Reinecke/nvme-In-band-authentication-support/20211112-210112
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5833291ab6de9c3e2374336b51c814e515e8f3a5
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: riscv-randconfig-c006-20211118 (attached as .config)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/306a253f85fb90aad03f8a14436907c2d96f4d55
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Hannes-Reinecke/nvme-In-band-authentication-support/20211112-210112
        git checkout 306a253f85fb90aad03f8a14436907c2d96f4d55
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/nvme/host/auth.c:929:8: note: Calling 'nvme_auth_dhchap_host_response'
           ret = nvme_auth_dhchap_host_response(ctrl, chap);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:659:2: note: Taking false branch
           dev_dbg(ctrl->device, "%s: qid %d host response seq %d transaction %d\n",
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/nvme/host/auth.c:662:13: note: Field 'host_response' is null
           if (!chap->host_response) {
                      ^
   drivers/nvme/host/auth.c:662:2: note: Taking true branch
           if (!chap->host_response) {
           ^
   drivers/nvme/host/auth.c:663:25: note: Calling 'nvme_auth_transform_key'
                   chap->host_response = nvme_auth_transform_key(ctrl->dhchap_key,
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:249:26: note: Calling 'nvme_auth_hmac_name'
           const char *hmac_name = nvme_auth_hmac_name(key_hash);
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:146:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < ARRAY_SIZE(hash_map); i++) {
           ^
   drivers/nvme/host/auth.c:147:7: note: Assuming 'hmac_id' is equal to field 'id'
                   if (hash_map[i].id == hmac_id)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:147:3: note: Taking true branch
                   if (hash_map[i].id == hmac_id)
                   ^
   drivers/nvme/host/auth.c:148:4: note: Returning pointer, which participates in a condition later
                           return hash_map[i].hmac;
                           ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:249:26: note: Returning from 'nvme_auth_hmac_name'
           const char *hmac_name = nvme_auth_hmac_name(key_hash);
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:252:2: note: 'transformed_key' declared without an initial value
           u8 *transformed_key;
           ^~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:255:6: note: Assuming 'key_hash' is not equal to 0
           if (key_hash == 0) {
               ^~~~~~~~~~~~~
   drivers/nvme/host/auth.c:255:2: note: Taking false branch
           if (key_hash == 0) {
           ^
   drivers/nvme/host/auth.c:260:6: note: Assuming 'key' is non-null
           if (!key || !key_len) {
               ^~~~
   drivers/nvme/host/auth.c:260:6: note: Left side of '||' is false
   drivers/nvme/host/auth.c:260:14: note: Assuming 'key_len' is not equal to 0
           if (!key || !key_len) {
                       ^~~~~~~~
   drivers/nvme/host/auth.c:260:2: note: Taking false branch
           if (!key || !key_len) {
           ^
   drivers/nvme/host/auth.c:264:7: note: 'hmac_name' is non-null
           if (!hmac_name) {
                ^~~~~~~~~
   drivers/nvme/host/auth.c:264:2: note: Taking false branch
           if (!hmac_name) {
           ^
   drivers/nvme/host/auth.c:270:6: note: Calling 'IS_ERR'
           if (IS_ERR(key_tfm))
               ^~~~~~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
   #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
           return IS_ERR_VALUE((unsigned long)ptr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:270:6: note: Returning from 'IS_ERR'
           if (IS_ERR(key_tfm))
               ^~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:270:2: note: Taking false branch
           if (IS_ERR(key_tfm))
           ^
   drivers/nvme/host/auth.c:276:6: note: Assuming 'shash' is null
           if (!shash) {
               ^~~~~~
   drivers/nvme/host/auth.c:276:2: note: Taking true branch
           if (!shash) {
           ^
   drivers/nvme/host/auth.c:278:3: note: Control jumps to line 304
                   goto out_free_key;
                   ^
   drivers/nvme/host/auth.c:305:6: note: 'ret' is < 0
           if (ret < 0) {
               ^~~
   drivers/nvme/host/auth.c:305:2: note: Taking true branch
           if (ret < 0) {
           ^
   drivers/nvme/host/auth.c:306:3: note: 1st function call argument is an uninitialized value
                   kfree_sensitive(transformed_key);
                   ^               ~~~~~~~~~~~~~~~
>> drivers/nvme/host/auth.c:821:23: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           ctrl->dhchap_key_len = key_len;
                                ^
   drivers/nvme/host/auth.c:1125:2: note: Loop condition is false.  Exiting loop
           INIT_WORK(&ctrl->dhchap_auth_work, nvme_dhchap_auth_work);
           ^
   include/linux/workqueue.h:245:2: note: expanded from macro 'INIT_WORK'
           __INIT_WORK((_work), (_func), 0)
           ^
   include/linux/workqueue.h:225:2: note: expanded from macro '__INIT_WORK'
           do {                                                            \
           ^
   drivers/nvme/host/auth.c:1126:2: note: Loop condition is false.  Exiting loop
           mutex_init(&ctrl->dhchap_auth_mutex);
           ^
   include/linux/mutex.h:101:32: note: expanded from macro 'mutex_init'
   #define mutex_init(mutex)                                               \
                                                                           ^
   drivers/nvme/host/auth.c:1127:2: note: Calling 'nvme_auth_generate_key'
           nvme_auth_generate_key(ctrl);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:801:2: note: 'key_len' declared without an initial value
           size_t key_len;
           ^~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:804:6: note: Assuming 'secret' is non-null
           if (!secret)
               ^~~~~~~
   drivers/nvme/host/auth.c:804:2: note: Taking false branch
           if (!secret)
           ^
   drivers/nvme/host/auth.c:807:6: note: Assuming the condition is false
           if (sscanf(secret, "DHHC-1:%hhd:%*s:", &key_hash) != 1)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:807:2: note: Taking false branch
           if (sscanf(secret, "DHHC-1:%hhd:%*s:", &key_hash) != 1)
           ^
   drivers/nvme/host/auth.c:811:8: note: Calling 'nvme_auth_extract_secret'
           key = nvme_auth_extract_secret(secret + 10, key_hash,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:201:6: note: Assuming 'p' is null
           if (p)
               ^
   drivers/nvme/host/auth.c:201:2: note: Taking false branch
           if (p)
           ^
   drivers/nvme/host/auth.c:204:6: note: Assuming 'key' is non-null
           if (!key)
               ^~~~
   drivers/nvme/host/auth.c:204:2: note: Taking false branch
           if (!key)
           ^
   drivers/nvme/host/auth.c:208:6: note: Assuming 'key_len' is < 0
           if (key_len < 0) {
               ^~~~~~~~~~~
   drivers/nvme/host/auth.c:208:2: note: Taking true branch
           if (key_len < 0) {
           ^
   drivers/nvme/host/auth.c:209:3: note: Taking false branch
                   pr_debug("base64 key decoding error %d\n",
                   ^
   include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/nvme/host/auth.c:211:3: note: Returning without writing to '*'
                   return ERR_PTR(key_len);
                   ^
   drivers/nvme/host/auth.c:811:8: note: Returning from 'nvme_auth_extract_secret'
           key = nvme_auth_extract_secret(secret + 10, key_hash,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:813:6: note: Calling 'IS_ERR'
           if (IS_ERR(key)) {
               ^~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
   #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
           return IS_ERR_VALUE((unsigned long)ptr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/auth.c:813:6: note: Returning from 'IS_ERR'
           if (IS_ERR(key)) {
               ^~~~~~~~~~~
   drivers/nvme/host/auth.c:813:2: note: Taking false branch
           if (IS_ERR(key)) {
           ^
   drivers/nvme/host/auth.c:821:23: note: Assigned value is garbage or undefined
           ctrl->dhchap_key_len = key_len;
                                ^ ~~~~~~~
   drivers/nvme/host/auth.c:849:28: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           ctrl->dhchap_ctrl_key_len = key_len;
                                     ^
   drivers/nvme/host/auth.c:1125:2: note: Loop condition is false.  Exiting loop
           INIT_WORK(&ctrl->dhchap_auth_work, nvme_dhchap_auth_work);

vim +821 drivers/nvme/host/auth.c

306a253f85fb90 Hannes Reinecke 2021-11-12  796  
306a253f85fb90 Hannes Reinecke 2021-11-12  797  int nvme_auth_generate_key(struct nvme_ctrl *ctrl)
306a253f85fb90 Hannes Reinecke 2021-11-12  798  {
306a253f85fb90 Hannes Reinecke 2021-11-12  799  	u8 *secret = ctrl->opts->dhchap_secret;
306a253f85fb90 Hannes Reinecke 2021-11-12  800  	u8 *key;
306a253f85fb90 Hannes Reinecke 2021-11-12  801  	size_t key_len;
306a253f85fb90 Hannes Reinecke 2021-11-12  802  	u8 key_hash;
306a253f85fb90 Hannes Reinecke 2021-11-12  803  
306a253f85fb90 Hannes Reinecke 2021-11-12  804  	if (!secret)
306a253f85fb90 Hannes Reinecke 2021-11-12  805  		return 0;
306a253f85fb90 Hannes Reinecke 2021-11-12  806  
306a253f85fb90 Hannes Reinecke 2021-11-12  807  	if (sscanf(secret, "DHHC-1:%hhd:%*s:", &key_hash) != 1)
306a253f85fb90 Hannes Reinecke 2021-11-12  808  		return -EINVAL;
306a253f85fb90 Hannes Reinecke 2021-11-12  809  
306a253f85fb90 Hannes Reinecke 2021-11-12  810  	/* Pass in the secret without the 'DHHC-1:XX:' prefix */
306a253f85fb90 Hannes Reinecke 2021-11-12  811  	key = nvme_auth_extract_secret(secret + 10, key_hash,
306a253f85fb90 Hannes Reinecke 2021-11-12  812  				       &key_len);
306a253f85fb90 Hannes Reinecke 2021-11-12  813  	if (IS_ERR(key)) {
306a253f85fb90 Hannes Reinecke 2021-11-12  814  		dev_dbg(ctrl->device, "failed to extract key, error %ld\n",
306a253f85fb90 Hannes Reinecke 2021-11-12  815  			PTR_ERR(key));
306a253f85fb90 Hannes Reinecke 2021-11-12  816  		return PTR_ERR(key);
306a253f85fb90 Hannes Reinecke 2021-11-12  817  	}
306a253f85fb90 Hannes Reinecke 2021-11-12  818  
306a253f85fb90 Hannes Reinecke 2021-11-12  819  	ctrl->dhchap_key = key;
306a253f85fb90 Hannes Reinecke 2021-11-12  820  	key = NULL;
306a253f85fb90 Hannes Reinecke 2021-11-12 @821  	ctrl->dhchap_key_len = key_len;
306a253f85fb90 Hannes Reinecke 2021-11-12  822  	ctrl->dhchap_key_hash = key_hash;
306a253f85fb90 Hannes Reinecke 2021-11-12  823  
306a253f85fb90 Hannes Reinecke 2021-11-12  824  	return 0;
306a253f85fb90 Hannes Reinecke 2021-11-12  825  }
306a253f85fb90 Hannes Reinecke 2021-11-12  826  EXPORT_SYMBOL_GPL(nvme_auth_generate_key);
306a253f85fb90 Hannes Reinecke 2021-11-12  827  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33214 bytes --]

^ permalink raw reply	[flat|nested] 73+ messages in thread
* [PATCHv5 00/12] nvme: In-band authentication support
@ 2021-11-12 12:59 Hannes Reinecke
  2021-11-12 12:59 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
  0 siblings, 1 reply; 73+ messages in thread
From: Hannes Reinecke @ 2021-11-12 12:59 UTC (permalink / raw)
  To: Sagi Grimberg
  Cc: Christoph Hellwig, Keith Busch, linux-nvme, Herbert Xu,
	David Miller, linux-crypto, Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

Tricky bit here is that the specification orients itself on TLS 1.3,
but supports only the FFDHE groups. Which of course the kernel doesn't
support. I've been able to come up with a patch for this, but as this
is my first attempt to fix anything in the crypto area I would invite
people more familiar with these matters to have a look.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

As usual, comments and reviews are welcome.

Changes to v4:
- Validate against blktest suite
- Fixup base64 decoding
- Transform secret with correct hmac algorithm

Changes to v3:
- Renamed parameter to 'dhchap_ctrl_key'
- Fixed bi-directional authentication
- Included reviews from Sagi
- Fixed base64 algorithm for transport encoding

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: Parse fabrics commands on all queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 +++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   12 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1564 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   34 +
 drivers/nvme/host/core.c               |  133 +-
 drivers/nvme/host/fabrics.c            |   83 +-
 drivers/nvme/host/fabrics.h            |    7 +
 drivers/nvme/host/nvme.h               |   36 +
 drivers/nvme/host/tcp.c                |    1 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   12 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    4 +
 drivers/nvme/target/auth.c             |  544 +++++++++
 drivers/nvme/target/configfs.c         |  138 ++-
 drivers/nvme/target/core.c             |   10 +
 drivers/nvme/target/fabrics-cmd-auth.c |  513 ++++++++
 drivers/nvme/target/fabrics-cmd.c      |   30 +-
 drivers/nvme/target/nvmet.h            |   77 ++
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  186 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  103 ++
 31 files changed, 4456 insertions(+), 12 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 73+ messages in thread
* [PATCHv4 00/12] nvme: In-band authentication support
@ 2021-09-28  6:03 Hannes Reinecke
  2021-09-28  6:03   ` Hannes Reinecke
  0 siblings, 1 reply; 73+ messages in thread
From: Hannes Reinecke @ 2021-09-28  6:03 UTC (permalink / raw)
  To: Sagi Grimberg
  Cc: Christoph Hellwig, Keith Busch, Herbert Xu, David S . Miller,
	linux-nvme, linux-crypto, Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

Tricky bit here is that the specification orients itself on TLS 1.3,
but supports only the FFDHE groups. Which of course the kernel doesn't
support. I've been able to come up with a patch for this, but as this
is my first attempt to fix anything in the crypto area I would invite
people more familiar with these matters to have a look.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

As usual, comments and reviews are welcome.

Changes to v3:
- Renamed parameter to 'dhchap_ctrl_key'
- Fixed bi-directional authentication
- Included reviews from Sagi
- Fixed base64 algorithm for transport encoding

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: Parse fabrics commands on all queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 ++++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   12 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1501 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   33 +
 drivers/nvme/host/core.c               |  126 +-
 drivers/nvme/host/fabrics.c            |   85 +-
 drivers/nvme/host/fabrics.h            |    7 +
 drivers/nvme/host/nvme.h               |   33 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   12 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    4 +
 drivers/nvme/target/auth.c             |  486 ++++++++
 drivers/nvme/target/configfs.c         |  133 ++-
 drivers/nvme/target/core.c             |   10 +
 drivers/nvme/target/fabrics-cmd-auth.c |  507 ++++++++
 drivers/nvme/target/fabrics-cmd.c      |   30 +-
 drivers/nvme/target/nvmet.h            |   74 ++
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  186 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  100 ++
 30 files changed, 4309 insertions(+), 11 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 73+ messages in thread
* [PATCHv3 00/12] nvme: In-band authentication support
@ 2021-09-10  6:43 Hannes Reinecke
  2021-09-10  6:43   ` Hannes Reinecke
  0 siblings, 1 reply; 73+ messages in thread
From: Hannes Reinecke @ 2021-09-10  6:43 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Sagi Grimberg, Keith Busch, Herbert Xu, David S . Miller,
	linux-nvme, linux-crypto, Hannes Reinecke

Hi all,

recent updates to the NVMe spec have added definitions for in-band
authentication, and seeing that it provides some real benefit
especially for NVMe-TCP here's an attempt to implement it.

Tricky bit here is that the specification orients itself on TLS 1.3,
but supports only the FFDHE groups. Which of course the kernel doesn't
support. I've been able to come up with a patch for this, but as this
is my first attempt to fix anything in the crypto area I would invite
people more familiar with these matters to have a look.

Also note that this is just for in-band authentication. Secure
concatenation (ie starting TLS with the negotiated parameters) is not
implemented; one would need to update the kernel TLS implementation
for this, which at this time is beyond scope.

As usual, comments and reviews are welcome.

Changes to v2:
- Dropped non-standard algorithms
- Reworked base64 based on fs/crypto/fname.c
- Fixup crash with no keys

Changes to the original submission:
- Included reviews from Vladislav
- Included reviews from Sagi
- Implemented re-authentication support
- Fixed up key handling

Hannes Reinecke (12):
  crypto: add crypto_has_shash()
  crypto: add crypto_has_kpp()
  crypto/ffdhe: Finite Field DH Ephemeral Parameters
  lib/base64: RFC4648-compliant base64 encoding
  nvme: add definitions for NVMe In-Band authentication
  nvme-fabrics: decode 'authentication required' connect error
  nvme: Implement In-Band authentication
  nvme-auth: Diffie-Hellman key exchange support
  nvmet: Parse fabrics commands on all queues
  nvmet: Implement basic In-Band Authentication
  nvmet-auth: Diffie-Hellman key exchange support
  nvmet-auth: expire authentication sessions

 crypto/Kconfig                         |    8 +
 crypto/Makefile                        |    1 +
 crypto/ffdhe_helper.c                  |  880 +++++++++++++++
 crypto/kpp.c                           |    6 +
 crypto/shash.c                         |    6 +
 drivers/nvme/host/Kconfig              |   13 +
 drivers/nvme/host/Makefile             |    1 +
 drivers/nvme/host/auth.c               | 1441 ++++++++++++++++++++++++
 drivers/nvme/host/auth.h               |   33 +
 drivers/nvme/host/core.c               |   79 +-
 drivers/nvme/host/fabrics.c            |   77 +-
 drivers/nvme/host/fabrics.h            |    6 +
 drivers/nvme/host/nvme.h               |   30 +
 drivers/nvme/host/trace.c              |   32 +
 drivers/nvme/target/Kconfig            |   12 +
 drivers/nvme/target/Makefile           |    1 +
 drivers/nvme/target/admin-cmd.c        |    4 +
 drivers/nvme/target/auth.c             |  442 ++++++++
 drivers/nvme/target/configfs.c         |  102 +-
 drivers/nvme/target/core.c             |   10 +
 drivers/nvme/target/fabrics-cmd-auth.c |  506 +++++++++
 drivers/nvme/target/fabrics-cmd.c      |   30 +-
 drivers/nvme/target/nvmet.h            |   70 ++
 include/crypto/ffdhe.h                 |   24 +
 include/crypto/hash.h                  |    2 +
 include/crypto/kpp.h                   |    2 +
 include/linux/base64.h                 |   16 +
 include/linux/nvme.h                   |  186 ++-
 lib/Makefile                           |    2 +-
 lib/base64.c                           |  100 ++
 30 files changed, 4111 insertions(+), 11 deletions(-)
 create mode 100644 crypto/ffdhe_helper.c
 create mode 100644 drivers/nvme/host/auth.c
 create mode 100644 drivers/nvme/host/auth.h
 create mode 100644 drivers/nvme/target/auth.c
 create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c
 create mode 100644 include/crypto/ffdhe.h
 create mode 100644 include/linux/base64.h
 create mode 100644 lib/base64.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 73+ messages in thread

end of thread, other threads:[~2022-03-22 12:44 UTC | newest]

Thread overview: 73+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-22  7:47 [PATCHv6 00/12] nvme: In-band authentication support Hannes Reinecke
2021-11-22  7:47 ` [PATCH 01/12] crypto: add crypto_has_shash() Hannes Reinecke
2021-11-22  7:47 ` [PATCH 02/12] crypto: add crypto_has_kpp() Hannes Reinecke
2021-11-22  7:47 ` [PATCH 03/12] crypto/ffdhe: Finite Field DH Ephemeral Parameters Hannes Reinecke
2021-11-23  8:41   ` Chaitanya Kulkarni
2021-11-22  7:47 ` [PATCH 04/12] lib/base64: RFC4648-compliant base64 encoding Hannes Reinecke
2021-11-22 12:06   ` Sagi Grimberg
2021-11-22  7:47 ` [PATCH 05/12] nvme: add definitions for NVMe In-Band authentication Hannes Reinecke
2021-11-23  8:43   ` Chaitanya Kulkarni
2021-11-22  7:47 ` [PATCH 06/12] nvme-fabrics: decode 'authentication required' connect error Hannes Reinecke
2021-11-22  7:47 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2021-11-22  8:12   ` Sagi Grimberg
2021-11-22  9:15     ` Hannes Reinecke
2021-11-23  9:02   ` Chaitanya Kulkarni
2021-11-22  7:47 ` [PATCH 08/12] nvme-auth: Diffie-Hellman key exchange support Hannes Reinecke
2021-11-22  7:47 ` [PATCH 09/12] nvmet: Parse fabrics commands on all queues Hannes Reinecke
2021-11-23  9:06   ` Chaitanya Kulkarni
2021-11-22  7:47 ` [PATCH 10/12] nvmet: Implement basic In-Band Authentication Hannes Reinecke
2021-11-22 11:59   ` Sagi Grimberg
2021-11-22 12:06     ` Hannes Reinecke
2021-11-22 13:21     ` Hannes Reinecke
2021-11-22 14:00       ` Sagi Grimberg
2021-11-22 14:17         ` Hannes Reinecke
2021-11-22 14:31           ` Sagi Grimberg
2021-11-22  7:47 ` [PATCH 11/12] nvmet-auth: Diffie-Hellman key exchange support Hannes Reinecke
2021-11-22  7:47 ` [PATCH 12/12] nvmet-auth: expire authentication sessions Hannes Reinecke
2021-11-22 12:03   ` Sagi Grimberg
2021-11-22  8:13 ` [PATCHv6 00/12] nvme: In-band authentication support Sagi Grimberg
2021-11-22  9:03   ` Hannes Reinecke
2021-11-22 11:32     ` Sagi Grimberg
2021-11-22 11:37       ` Hannes Reinecke
2021-11-22 11:45         ` Sagi Grimberg
2021-11-22 11:56           ` Hannes Reinecke
2021-11-22 12:01             ` Sagi Grimberg
  -- strict thread matches above, loose matches on Subject: below --
2021-12-02 15:23 [PATCHv8 " Hannes Reinecke
2021-12-02 15:23 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2022-03-22 11:40   ` Max Gurtovoy
2022-03-22 12:10     ` Hannes Reinecke
2022-03-22 12:21       ` Max Gurtovoy
2022-03-22 12:44         ` Hannes Reinecke
2021-11-23 12:37 [PATCHv7 00/12] nvme: In-band authentication support Hannes Reinecke
2021-11-23 12:37 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2021-11-23 13:11   ` Sagi Grimberg
2021-11-23 13:30     ` Hannes Reinecke
2021-11-20 21:09 kernel test robot
2021-11-12 12:59 [PATCHv5 00/12] nvme: In-band authentication support Hannes Reinecke
2021-11-12 12:59 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2021-11-16 10:25   ` Sagi Grimberg
2021-11-16 10:40     ` Hannes Reinecke
2021-11-16 10:35   ` Sagi Grimberg
2021-11-16 10:41     ` Hannes Reinecke
2021-09-28  6:03 [PATCHv4 00/12] nvme: In-band authentication support Hannes Reinecke
2021-09-28  6:03 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2021-09-28  6:03   ` Hannes Reinecke
2021-09-10  6:43 [PATCHv3 00/12] nvme: In-band authentication support Hannes Reinecke
2021-09-10  6:43 ` [PATCH 07/12] nvme: Implement In-Band authentication Hannes Reinecke
2021-09-10  6:43   ` Hannes Reinecke
2021-09-13 13:55   ` Sagi Grimberg
2021-09-13 13:55     ` Sagi Grimberg
2021-09-13 14:33     ` Hannes Reinecke
2021-09-13 14:33       ` Hannes Reinecke
2021-09-14  7:06       ` Sagi Grimberg
2021-09-14  7:06         ` Sagi Grimberg
2021-09-14  7:19         ` Hannes Reinecke
2021-09-14  7:19           ` Hannes Reinecke
2021-09-16 17:23   ` Chaitanya Kulkarni
2021-09-26 22:04   ` Sagi Grimberg
2021-09-26 22:04     ` Sagi Grimberg
2021-09-27  7:26     ` Hannes Reinecke
2021-09-27  7:26       ` Hannes Reinecke
2021-09-27  7:52       ` Sagi Grimberg
2021-09-27  7:52         ` Sagi Grimberg
2021-09-26 22:53   ` Sagi Grimberg
2021-09-26 22:53     ` Sagi Grimberg
2021-09-27  5:48     ` Hannes Reinecke
2021-09-27  5:48       ` Hannes Reinecke
2021-09-27  7:52       ` Sagi Grimberg
2021-09-27  7:52         ` Sagi Grimberg

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.