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

Al Viro
2007-10-17T14:32:49Z

On Wed, Oct 17, 2007 at 03:46:43PM +0200, Roel Kluin wrote:
> +++ b/drivers/misc/asus-laptop.c
> @@ -322,7 +322,7 @@ static void write_status(acpi_handle handle, int out, int mask)
>
> switch (mask) {
> case MLED_ON:
> - out = !out & 0x1;
> + out = !(out & 0x1);

Not sure if that's what had been intended.

> @@ -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);

Wrong. This code, ugly as it is, happens to be correct. Replacement
isn't. I would rewrite it as ^= PF_TESTED | USE_PF; /* remove USE_PF, set *
* PF_TESTED */

The rest is covered by Alexey's patch and one I'd posted as followup.