> - if (0 <= ret && (unsigned) ret < nr_pages) { > + if (ret > 0 && (unsigned) ret < nr_pages) { This is not an equivalent transformation -- the original code is true if ret == 0, while the new code is false. Also it seems you don't need the unsigned cast here, since the clause before just checked that ret is positive? - R.