On Thu, Oct 18, 2018 at 08:17:10PM -0400, Doug Ledford wrote: > On Thu, 2018-10-18 at 14:01 +0300, Leon Romanovsky wrote: > > On Thu, Oct 18, 2018 at 10:02:58AM +0200, Gustavo A. R. Silva wrote: > > > Cast *max_num_sg* to u64 in order to give the compiler complete > > > information about the proper arithmetic to use. > > > > > > Notice that such variable is used in a context that expects an > > > expression of type u64 (64 bits, unsigned) and the following > > > expression is currently being evaluated using 32-bit > > > arithmetic: > > > > And what is wrong with that? > > Please fix static analyzer tool instead of fixing proper C code. > > Judging on the static analyzer tool's message, I don't see anything > wrong with it. The code contains a potential unintentional overflow > error. The author might have been well aware of the overflow and not > cared and in that case this is valid C, but the analyzer has no way of > knowing that, so it flags it for review. To silence the checker you > could either cast the arithmetic to u64, or cast length to u32. Either > would clear up the ambiguity. I guess I'm not seeing why you would > blame the static checker in this case, it did the best it is possible > for it to do. You are right, static analyzer tools have no way to understand that this overflow isn't possible. I was over excited to go to my vacation hence my response. Sorry about that. Thanks
Attachment:
signature.asc
Description: PGP signature