mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
[SCSI] aic7xxx: fix byte I/O order in ahd_inw
Comment says "Read high byte first as some registers increment..." but code doesn't guarantee that, I think: return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port)); Compiler can reorder it. Make the order explicit. Signed-off-by: Denis Vlasenko <vda.linux@googlemail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Fixed rejections and added aic7xxx code Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
02a0fa676c
commit
7b75b990e3
2 changed files with 4 additions and 2 deletions
|
@ -527,7 +527,8 @@ ahd_inw(struct ahd_softc *ahd, u_int port)
|
|||
* or have other side effects when the low byte is
|
||||
* read.
|
||||
*/
|
||||
return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port));
|
||||
uint16_t r = ahd_inb(ahd, port+1) << 8;
|
||||
return r | ahd_inb(ahd, port);
|
||||
}
|
||||
|
||||
static __inline void
|
||||
|
|
|
@ -300,7 +300,8 @@ ahc_fetch_transinfo(struct ahc_softc *ahc, char channel, u_int our_id,
|
|||
static __inline uint16_t
|
||||
ahc_inw(struct ahc_softc *ahc, u_int port)
|
||||
{
|
||||
return ((ahc_inb(ahc, port+1) << 8) | ahc_inb(ahc, port));
|
||||
uint16_t r = ahc_inb(ahc, port+1) << 8;
|
||||
return r | ahc_inb(ahc, port);
|
||||
}
|
||||
|
||||
static __inline void
|
||||
|
|
Loading…
Reference in a new issue