Commit e52b904b authored by Dmitry Bogdanov's avatar Dmitry Bogdanov Committed by Martin K. Petersen
Browse files

scsi: target: iscsi: Allow AuthMethod=None

Allow negotiating AuthMethod=None at CSG=0 (Security Negotiation) when
authentication is not required. That is required by the CHAP test in
Windows HLK.

Link: https://lore.kernel.org/r/20220718152555.17084-4-d.bogdanov@yadro.com


Reviewed-by: default avatarMike Christie <michael.christie@oracle.com>
Signed-off-by: default avatarDmitry Bogdanov <d.bogdanov@yadro.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 1e573388
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -341,6 +341,7 @@ static int iscsi_login_zero_tsih_s2(
{
	struct iscsi_node_attrib *na;
	struct iscsit_session *sess = conn->sess;
	struct iscsi_param *param;
	bool iser = false;

	sess->tpg = conn->tpg;
@@ -374,6 +375,18 @@ static int iscsi_login_zero_tsih_s2(

	na = iscsit_tpg_get_node_attrib(sess);

	/*
	 * If ACL allows non-authorized access in TPG with CHAP,
	 * then set None to AuthMethod.
	 */
	param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list);
	if (param && !strstr(param->value, NONE)) {
		if (!iscsi_conn_auth_required(conn))
			if (iscsi_change_param_sprintf(conn, "AuthMethod=%s",
						       NONE))
				return -1;
	}

	/*
	 * Need to send TargetPortalGroupTag back in first login response
	 * on any iSCSI connection where the Initiator provides TargetName.
+1 −1
Original line number Diff line number Diff line
@@ -814,7 +814,7 @@ static int iscsi_target_do_authentication(
	return 0;
}

static bool iscsi_conn_auth_required(struct iscsit_conn *conn)
bool iscsi_conn_auth_required(struct iscsit_conn *conn)
{
	struct iscsi_node_acl *nacl;
	struct se_node_acl *se_nacl;
+1 −1
Original line number Diff line number Diff line
@@ -22,5 +22,5 @@ extern int iscsi_target_locate_portal(struct iscsi_np *, struct iscsit_conn *,
extern int iscsi_target_start_negotiation(
		struct iscsi_login *, struct iscsit_conn *);
extern void iscsi_target_nego_release(struct iscsit_conn *);

extern bool iscsi_conn_auth_required(struct iscsit_conn *conn);
#endif /* ISCSI_TARGET_NEGO_H */