Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f8b4909 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SCSI fixes from James Bottomley:
 "Two iscsi fixes.

  One for an oops in the client which can be triggered by the server
  authentication protocol and the other in the target code which causes
  data corruption"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: iscsi: set auth_protocol back to NULL if CHAP_A value is not supported
  scsi: target/iblock: Fix overrun in WRITE SAME emulation
parents ceacbc0e 5dd6c493
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -81,6 +81,12 @@ static int chap_check_algorithm(const char *a_str)
	return CHAP_DIGEST_UNKNOWN;
}

static void chap_close(struct iscsi_conn *conn)
{
	kfree(conn->auth_protocol);
	conn->auth_protocol = NULL;
}

static struct iscsi_chap *chap_server_open(
	struct iscsi_conn *conn,
	struct iscsi_node_auth *auth,
@@ -118,7 +124,7 @@ static struct iscsi_chap *chap_server_open(
	case CHAP_DIGEST_UNKNOWN:
	default:
		pr_err("Unsupported CHAP_A value\n");
		kfree(conn->auth_protocol);
		chap_close(conn);
		return NULL;
	}

@@ -133,19 +139,13 @@ static struct iscsi_chap *chap_server_open(
	 * Generate Challenge.
	 */
	if (chap_gen_challenge(conn, 1, aic_str, aic_len) < 0) {
		kfree(conn->auth_protocol);
		chap_close(conn);
		return NULL;
	}

	return chap;
}

static void chap_close(struct iscsi_conn *conn)
{
	kfree(conn->auth_protocol);
	conn->auth_protocol = NULL;
}

static int chap_server_compute_md5(
	struct iscsi_conn *conn,
	struct iscsi_node_auth *auth,
+1 −1
Original line number Diff line number Diff line
@@ -502,7 +502,7 @@ iblock_execute_write_same(struct se_cmd *cmd)

		/* Always in 512 byte units for Linux/Block */
		block_lba += sg->length >> SECTOR_SHIFT;
		sectors -= 1;
		sectors -= sg->length >> SECTOR_SHIFT;
	}

	iblock_submit_bios(&list);