Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Staging: xgifb: disable pci device if there's an error after enabling it.

Signed-off-by: Miguel Gómez <magomez@igalia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Miguel Gómez and committed by
Greg Kroah-Hartman
05e06036 d049053e

+6 -4
+6 -4
drivers/staging/xgifb/XGI_main_26.c
··· 1904 1904 if (reg1 != 0xa1) { /*I/O error */ 1905 1905 pr_err("I/O error!!!"); 1906 1906 ret = -EIO; 1907 - goto error; 1907 + goto error_disable; 1908 1908 } 1909 1909 1910 1910 switch (xgifb_info->chip_id) { ··· 1927 1927 break; 1928 1928 default: 1929 1929 ret = -ENODEV; 1930 - goto error; 1930 + goto error_disable; 1931 1931 } 1932 1932 1933 1933 pr_info("chipid = %x\n", xgifb_info->chip); ··· 1936 1936 if (XGIfb_get_dram_size(xgifb_info)) { 1937 1937 pr_err("Fatal error: Unable to determine RAM size.\n"); 1938 1938 ret = -ENODEV; 1939 - goto error; 1939 + goto error_disable; 1940 1940 } 1941 1941 1942 1942 /* Enable PCI_LINEAR_ADDRESSING and MMIO_ENABLE */ ··· 1956 1956 pr_err("Fatal error: Unable to reserve frame buffer memory\n"); 1957 1957 pr_err("Is there another framebuffer driver active?\n"); 1958 1958 ret = -ENODEV; 1959 - goto error; 1959 + goto error_disable; 1960 1960 } 1961 1961 1962 1962 if (!request_mem_region(xgifb_info->mmio_base, ··· 2271 2271 release_mem_region(xgifb_info->mmio_base, xgifb_info->mmio_size); 2272 2272 error_0: 2273 2273 release_mem_region(xgifb_info->video_base, xgifb_info->video_size); 2274 + error_disable: 2275 + pci_disable_device(pdev); 2274 2276 error: 2275 2277 framebuffer_release(fb_info); 2276 2278 return ret;