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

misc: mic: use common error path

Instead of calling release_firmware() on every error and then jumping
lets have a common release_firmware() in the error path.
This patch also fixes a memory leak where we missed release_firmware()
if mic_x100_load_command_line() fails.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Reviewed-by: Sudeep Dutt <sudeep.dutt@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Sudip Mukherjee and committed by
Greg Kroah-Hartman
5fb43798 fbaa72d5

+7 -6
+7 -6
drivers/misc/mic/host/mic_x100.c
··· 463 463 rc = -EINVAL; 464 464 dev_err(&mdev->pdev->dev, "%s %d rc %d bootaddr 0x%x\n", 465 465 __func__, __LINE__, rc, mdev->bootaddr); 466 - release_firmware(fw); 467 - goto done; 466 + goto error; 468 467 } 469 468 memcpy_toio(mdev->aper.va + mdev->bootaddr, fw->data, fw->size); 470 469 mdev->ops->write_spad(mdev, MIC_X100_FW_SIZE, fw->size); ··· 471 472 rc = -EINVAL; 472 473 dev_err(&mdev->pdev->dev, "%s %d rc %d\n", 473 474 __func__, __LINE__, rc); 474 - release_firmware(fw); 475 - goto done; 475 + goto error; 476 476 } 477 477 /* load command line */ 478 478 rc = mic_x100_load_command_line(mdev, fw); 479 479 if (rc) { 480 480 dev_err(&mdev->pdev->dev, "%s %d rc %d\n", 481 481 __func__, __LINE__, rc); 482 - goto done; 482 + goto error; 483 483 } 484 484 release_firmware(fw); 485 485 /* load ramdisk */ 486 486 if (mdev->cosm_dev->ramdisk) 487 487 rc = mic_x100_load_ramdisk(mdev); 488 488 489 - done: 489 + return rc; 490 + 491 + error: 492 + release_firmware(fw); 490 493 return rc; 491 494 } 492 495