Re: [PATCH 1/4] fix not-and/or errors

Andreas Schwab
2007-10-17T14:17:54Z

Roel Kluin <12o3l@tiscali.nl> writes:

> diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
> index 73c44cb..81943ef 100644
> --- a/drivers/scsi/st.c
> +++ b/drivers/scsi/st.c
> @@ -2882,7 +2882,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
> !(STp->use_pf & PF_TESTED)) {
> /* Try the other possible state of Page Format if not
> already tried */
> - STp->use_pf = !STp->use_pf | PF_TESTED;
> + STp->use_pf = !(STp->use_pf | PF_TESTED);

This does not make sense. Since PF_TESTED is non-zero the expression
will always be zero.

Looking at the context the original expression is likely to be the
intended one. use_pf at this point can either be 0 or 1 (USE_PF), and
the result is supposed to be (1|PF_TESTED) or (0|PF_TESTED), resp.

Andreas.

--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."