On Thursday 30 October 2008, Dave wrote: > After much faffing about, I managed to bisect this. In retrospect the > above hint (thanks Russell) and a code inspection ought to have made the > bug obvious. The offending commit is: > > commit 1168386aa7d850ead2ae135d5a7949a592c6e9a0 > pcmcia: deprecate CS_OUT_OF_RESOURCE > > in which the following change is made (among others): > > @@ -352,7 +352,9 @@ int verify_cis_cache(struct pcmcia_socket *s) > > buf = kmalloc(256, GFP_KERNEL); > if (buf == NULL) > - return -1; > + dev_printk(KERN_WARNING, &s->dev, > + "no memory for verifying CIS\n"); > + return -ENOMEM; > list_for_each_entry(cis, &s->cis_cache, node) { > int len = cis->len; > Oh, my ... I have been looking over this dozens of times ... it just proves how addictive to bisecting in place of proper debugging we became :( Dave, thank you! Rafael, this falls in obvious "regression with patches" case I think. Tested-by: Andrey Borzenkov <arvidjaar@xxxxxxx> > > The attached patch should fix things. > > Regards, > > Dave. > --- > pcmcia: Actually verify against the cached CIS > > Commit 1168386aa7d850ead2ae135d5a7949a592c6e9a0 introduced a printk into > a single line if without adding braces, resulting in PCMCIA devices > being added as new on resume. > > Add the necessary braces. > > Reported by: Andrey Borzenkov <arvidjaar@xxxxxxx> > Signed-off by: David Kilroy <kilroyd@xxxxxxxxx> > --- > diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c > index 8d37768..91a00ec 100644 > --- a/drivers/pcmcia/cistpl.c > +++ b/drivers/pcmcia/cistpl.c > @@ -351,10 +351,12 @@ int verify_cis_cache(struct pcmcia_socket *s) > char *buf; > > buf = kmalloc(256, GFP_KERNEL); > - if (buf == NULL) > + if (buf == NULL) { > dev_printk(KERN_WARNING, &s->dev, > "no memory for verifying CIS\n"); > return -ENOMEM; > + } > + > list_for_each_entry(cis, &s->cis_cache, node) { > int len = cis->len; > > > >
Attachment:
signature.asc
Description: This is a digitally signed message part.