diff --git a/drivers/video/s3fb.c b/drivers/video/s3fb.c index 3091b20124b45eb94d609da9a9702a92e9e1c9c1..c348813e61320ae26f7d3668d0b6646c4871a420 100644 --- a/drivers/video/s3fb.c +++ b/drivers/video/s3fb.c @@ -1061,6 +1061,7 @@ static int s3_pci_resume(struct pci_dev* dev) { struct fb_info *info = pci_get_drvdata(dev); struct s3fb_info *par = info->par; + int err; dev_info(&(dev->dev), "resume\n"); @@ -1075,7 +1076,13 @@ static int s3_pci_resume(struct pci_dev* dev) pci_set_power_state(dev, PCI_D0); pci_restore_state(dev); - pci_enable_device(dev); + err = pci_enable_device(dev); + if (err) { + mutex_unlock(&(par->open_lock)); + release_console_sem(); + dev_err(&(dev->dev), "error %d enabling device for resume\n", err); + return err; + } pci_set_master(dev); s3fb_set_par(info);