> +static int pgm_check_occured; > + > +static void cio_reset_pgm_check_handler(void) > +{ > + pgm_check_occured = 1; > +} > + > +static int stsch_reset(struct subchannel_id schid, volatile struct schib > *addr) > +{ > + int rc; > + > + pgm_check_occured = 0; > + s390_reset_pgm_handler = cio_reset_pgm_check_handler; > + rc = stsch(schid, addr); > + s390_reset_pgm_handler = NULL; > + if (pgm_check_occured) > + return -EIO; > + else > + return rc; > +}
This is broken. pgm_check_occured must be volatile, otherwise the -EIO path in stsch_reset might get optimized away. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/