mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-19 05:36:22 +00:00
scst_pres: Revert r9114
In contrast with the description of that commit, commit r9114 changes the functionality of the scst_pres code. Hence revert that commit. Reported-by: Chesnokov Gleb <Chesnokov.G@raidix.com> git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9213 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
+17
-16
@@ -795,7 +795,7 @@ static int scst_pr_do_load_device_file(struct scst_device *dev,
|
||||
tid = &buf[pos];
|
||||
pos += scst_tid_size(tid);
|
||||
|
||||
key = get_unaligned_be64(&buf[pos]);
|
||||
key = get_unaligned((__be64 *)&buf[pos]);
|
||||
pos += sizeof(key);
|
||||
|
||||
rel_tgt_id = get_unaligned((uint16_t *)&buf[pos]);
|
||||
@@ -1294,7 +1294,7 @@ static int scst_pr_register_with_spec_i_pt(struct scst_cmd *cmd,
|
||||
|
||||
scst_assert_pr_mutex_held(cmd->dev);
|
||||
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
|
||||
ext_size = get_unaligned_be32(&buffer[24]);
|
||||
if ((ext_size + 28) > buffer_size) {
|
||||
@@ -1505,7 +1505,7 @@ static int scst_pr_register_on_tgt_id(struct scst_cmd *cmd,
|
||||
__be64 action_key;
|
||||
struct scst_dev_registrant *reg;
|
||||
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
|
||||
reg = scst_pr_add_registrant(cmd->dev, cmd->sess->transport_id,
|
||||
rel_tgt_id, action_key, false);
|
||||
@@ -1680,8 +1680,8 @@ void scst_pr_register(struct scst_cmd *cmd, uint8_t *buffer, int buffer_size)
|
||||
aptpl = buffer[20] & 0x01;
|
||||
spec_i_pt = (buffer[20] >> 3) & 0x01;
|
||||
all_tg_pt = (buffer[20] >> 2) & 0x01;
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
|
||||
if (spec_i_pt == 0 && buffer_size != 24) {
|
||||
TRACE_PR("Invalid buffer size %d", buffer_size);
|
||||
@@ -1767,7 +1767,7 @@ void scst_pr_register_and_ignore(struct scst_cmd *cmd, uint8_t *buffer,
|
||||
|
||||
aptpl = buffer[20] & 0x01;
|
||||
all_tg_pt = (buffer[20] >> 2) & 0x01;
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
|
||||
if (buffer_size != 24) {
|
||||
TRACE_PR("Invalid buffer size %d", buffer_size);
|
||||
@@ -1838,8 +1838,8 @@ void scst_pr_register_and_move(struct scst_cmd *cmd, uint8_t *buffer,
|
||||
scst_assert_pr_mutex_held(cmd->dev);
|
||||
|
||||
aptpl = buffer[17] & 0x01;
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
unreg = (buffer[17] >> 1) & 0x01;
|
||||
tid_buffer_size = get_unaligned_be32(&buffer[20]);
|
||||
|
||||
@@ -1980,7 +1980,7 @@ void scst_pr_reserve(struct scst_cmd *cmd, uint8_t *buffer, int buffer_size)
|
||||
|
||||
scst_assert_pr_mutex_held(dev);
|
||||
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
scope = cmd->cdb[2] >> 4;
|
||||
type = cmd->cdb[2] & 0x0f;
|
||||
|
||||
@@ -2069,7 +2069,7 @@ void scst_pr_release(struct scst_cmd *cmd, uint8_t *buffer, int buffer_size)
|
||||
|
||||
scst_assert_pr_mutex_held(dev);
|
||||
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
scope = cmd->cdb[2] >> 4;
|
||||
type = cmd->cdb[2] & 0x0f;
|
||||
|
||||
@@ -2146,7 +2146,7 @@ void scst_pr_clear(struct scst_cmd *cmd, uint8_t *buffer, int buffer_size)
|
||||
|
||||
scst_assert_pr_mutex_held(dev);
|
||||
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
|
||||
if (buffer_size != 24) {
|
||||
TRACE_PR("Invalid buffer size %d", buffer_size);
|
||||
@@ -2207,8 +2207,8 @@ static void scst_pr_do_preempt(struct scst_cmd *cmd, uint8_t *buffer,
|
||||
goto out;
|
||||
}
|
||||
|
||||
key = get_unaligned_be64(&buffer[0]);
|
||||
action_key = get_unaligned_be64(&buffer[8]);
|
||||
key = get_unaligned((__be64 *)&buffer[0]);
|
||||
action_key = get_unaligned((__be64 *)&buffer[8]);
|
||||
scope = cmd->cdb[2] >> 4;
|
||||
type = cmd->cdb[2] & 0x0f;
|
||||
|
||||
@@ -2598,7 +2598,8 @@ void scst_pr_read_keys(struct scst_cmd *cmd, uint8_t *buffer, int buffer_size)
|
||||
|
||||
WARN_ON(reg->key == 0);
|
||||
|
||||
put_unaligned_be64(reg->key, &buffer[offset]);
|
||||
put_unaligned(reg->key,
|
||||
(__be64 *)&buffer[offset]);
|
||||
|
||||
offset += 8;
|
||||
}
|
||||
@@ -2655,7 +2656,7 @@ void scst_pr_read_reservation(struct scst_cmd *cmd, uint8_t *buffer,
|
||||
b[6] = 0;
|
||||
b[7] = 0x10;
|
||||
|
||||
put_unaligned_be64(key, &b[8]);
|
||||
put_unaligned(key, (__be64 *)&b[8]);
|
||||
b[21] = dev->pr_scope << 4 | dev->pr_type;
|
||||
|
||||
size = 24;
|
||||
@@ -2743,7 +2744,7 @@ void scst_pr_read_full_status(struct scst_cmd *cmd, uint8_t *buffer,
|
||||
if (size_max - size > rec_len) {
|
||||
memset(&buffer[offset], 0, rec_len);
|
||||
|
||||
put_unaligned_be64(reg->key, &buffer[offset]);
|
||||
put_unaligned(reg->key, (__be64 *)(&buffer[offset]));
|
||||
|
||||
if (dev->pr_is_set && scst_pr_is_holder(dev, reg)) {
|
||||
buffer[offset + 12] = 1;
|
||||
|
||||
Reference in New Issue
Block a user