Messages in this thread | | | Subject | Re: [PATCH] rds: ib: force endiannes annotation | From | Edward Cree <> | Date | Mon, 29 Apr 2019 12:00:06 +0100 |
| |
On 29/04/2019 07:09, Nicholas Mc Guire wrote: > diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c > index 7055985..a070a2d 100644 > --- a/net/rds/ib_recv.c > +++ b/net/rds/ib_recv.c > @@ -824,7 +824,7 @@ static void rds_ib_cong_recv(struct rds_connection *conn, > } > > /* the congestion map is in little endian order */ > - uncongested = le64_to_cpu(uncongested); > + uncongested = le64_to_cpu((__force __le64)uncongested); > > rds_cong_map_updated(map, uncongested); > } Again, a __force cast doesn't seem necessary here. It looks like the code is just using the wrong types; if all of src, dst and uncongested were __le64 instead of uint64_t, and the last two lines replaced with rds_cong_map_updated(map, le64_to_cpu(uncongested)); then the semantics would be kept with neither sparse errors nor __force.
__force is almost never necessary and mostly just masks other bugs or endianness confusion in the surrounding code. Instead of adding a __force, either fix the code to be sparse-clean or leave the sparse warning in place so that future developers know there's something not right.
-Ed
| |