The resuting code has some redundancy and the compiler can potentially
produce better code if we omit a function call that is unconditionally
executed in
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index a126e61..d51c5a3 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -116,13 +116,10 @@ static int ath3k_probe(struct usb_interface *intf,
return -EIO;
}
- if (ath3k_load_firmware(udev, firmware)) {
- release_firmware(firmware);
- return -EIO;
- }
+ ret = ath3k_load_firmware(udev, firmware);
release_firmware(firmware);
- return 0;
+ return ret ? -EIO : 0;
}