Skip to content

Commit

Permalink
nvmet: Set 'TREQ' to 'required' when TLS is enabled
Browse files Browse the repository at this point in the history
The current implementation does not support secure concatenation,
so 'TREQ' is always set to 'required' when TLS is enabled.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
  • Loading branch information
Hannes Reinecke authored and Keith Busch committed Oct 11, 2023
1 parent 79a4f18 commit eb39881
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
15 changes: 13 additions & 2 deletions drivers/nvme/target/configfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ static inline u8 nvmet_port_disc_addr_treq_mask(struct nvmet_port *port)

static ssize_t nvmet_addr_treq_show(struct config_item *item, char *page)
{
u8 treq = to_nvmet_port(item)->disc_addr.treq &
NVME_TREQ_SECURE_CHANNEL_MASK;
u8 treq = nvmet_port_disc_addr_treq_secure_channel(to_nvmet_port(item));
int i;

for (i = 0; i < ARRAY_SIZE(nvmet_addr_treq); i++) {
Expand Down Expand Up @@ -376,6 +375,7 @@ static ssize_t nvmet_addr_tsas_store(struct config_item *item,
const char *page, size_t count)
{
struct nvmet_port *port = to_nvmet_port(item);
u8 treq = nvmet_port_disc_addr_treq_mask(port);
u8 sectype;
int i;

Expand All @@ -397,6 +397,17 @@ static ssize_t nvmet_addr_tsas_store(struct config_item *item,

found:
nvmet_port_init_tsas_tcp(port, sectype);
/*
* The TLS implementation currently does not support
* secure concatenation, so TREQ is always set to 'required'
* if TLS is enabled.
*/
if (sectype == NVMF_TCP_SECTYPE_TLS13) {
treq |= NVMF_TREQ_REQUIRED;
} else {
treq |= NVMF_TREQ_NOT_SPECIFIED;
}
port->disc_addr.treq = treq;
return count;
}

Expand Down
5 changes: 5 additions & 0 deletions drivers/nvme/target/nvmet.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,11 @@ static inline struct nvmet_port *ana_groups_to_port(
ana_groups_group);
}

static inline u8 nvmet_port_disc_addr_treq_secure_channel(struct nvmet_port *port)
{
return (port->disc_addr.treq & NVME_TREQ_SECURE_CHANNEL_MASK);
}

struct nvmet_ctrl {
struct nvmet_subsys *subsys;
struct nvmet_sq **sqs;
Expand Down

0 comments on commit eb39881

Please sign in to comment.