mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
w1: fix slave selection on big-endian systems
During test of the w1-gpio driver i found that in "w1.c:679 w1_slave_found()" the device id is converted to little-endian with "cpu_to_le64()", but its not converted back to cpu format in "w1_io.c:293 w1_reset_select_slave()". Based on a patch created by Andreas Hummel. [akpm@linux-foundation.org: remove unneeded cast] Reported-by: Andreas Hummel <andi_hummel@gmx.de> Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cc6c2ca300
commit
f00a189257
@ -356,7 +356,9 @@ int w1_reset_select_slave(struct w1_slave *sl)
|
|||||||
w1_write_8(sl->master, W1_SKIP_ROM);
|
w1_write_8(sl->master, W1_SKIP_ROM);
|
||||||
else {
|
else {
|
||||||
u8 match[9] = {W1_MATCH_ROM, };
|
u8 match[9] = {W1_MATCH_ROM, };
|
||||||
memcpy(&match[1], (u8 *)&sl->reg_num, 8);
|
u64 rn = le64_to_cpu(*((u64*)&sl->reg_num));
|
||||||
|
|
||||||
|
memcpy(&match[1], &rn, 8);
|
||||||
w1_write_block(sl->master, match, 9);
|
w1_write_block(sl->master, match, 9);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user