At Thu, 19 Apr 2012 14:21:59 +0200 (CEST), Julia Lawall wrote: > > On Thu, 19 Apr 2012, Takashi Iwai wrote: > > > At Thu, 19 Apr 2012 08:40:40 +0200, > > Julia Lawall wrote: > >> > >> From: Julia Lawall <Julia.Lawall@xxxxxxx> > >> > >> There seems to be no interaction between *port and the requested region, so > >> the clearing of *vport should take place if the request_region fails. > >> > >> Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxx> > >> > >> --- > >> Not tested. sc6000_setup_board seems rather complicated, so my reasoning > >> could be completely wrong. > > > > This setup is called first at sc6000_init_board(), which is called > > much later than these error paths. So, I don't think the need to call > > sc6000_setup_board(*vport, 0) at err_unmap1. > > Thanks for the feedback. I guess then it is not needed on the failure > of devm_ioport_map either. Is it needed on the failure of > sc6000_init_board? That can fail either before or after the calls to > sc6000_setup_board hav taken place. Some error paths in sc6000_init_board() don't look necessary to call sc6000_setup_board(0), indeed. But it's not too critical to call sc6000_setup_board() at that timinig (there should be no hang), so I don't think we need to change it unless it hits any real problem. thanks, Takashi > > thanks, > julia > > > > > > > > > thanks, > > > > Takashi > > > >> > >> sound/isa/sc6000.c | 5 +++-- > >> 1 file changed, 3 insertions(+), 2 deletions(-) > >> > >> diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c > >> index d97d0f3..57679cb 100644 > >> --- a/sound/isa/sc6000.c > >> +++ b/sound/isa/sc6000.c > >> @@ -594,7 +594,7 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) > >> snd_printk(KERN_ERR PFX > >> "I/O port cannot be iomaped.\n"); > >> err = -EBUSY; > >> - goto err_unmap1; > >> + goto err_unmap0; > >> } > >> > >> /* to make it marked as used */ > >> @@ -678,9 +678,10 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) > >> return 0; > >> > >> err_unmap2: > >> - sc6000_setup_board(*vport, 0); > >> release_region(mss_port[dev], 4); > >> err_unmap1: > >> + sc6000_setup_board(*vport, 0); > >> +err_unmap0: > >> release_region(port[dev], 0x10); > >> err_exit: > >> snd_card_free(card); > >> > > -- > > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html