if (!ntb->msi)
                return -EINVAL;
 
-       msi_lock_descs(&ntb->pdev->dev);
-       desc = msi_first_desc(&ntb->pdev->dev, MSI_DESC_ASSOCIATED);
-       addr = desc->msg.address_lo + ((uint64_t)desc->msg.address_hi << 32);
-       msi_unlock_descs(&ntb->pdev->dev);
+       scoped_guard (msi_descs_lock, &ntb->pdev->dev) {
+               desc = msi_first_desc(&ntb->pdev->dev, MSI_DESC_ASSOCIATED);
+               addr = desc->msg.address_lo + ((uint64_t)desc->msg.address_hi << 32);
+       }
 
        for (peer = 0; peer < ntb_peer_port_count(ntb); peer++) {
                peer_widx = ntb_peer_highest_mw_idx(ntb, peer);
        if (!ntb->msi)
                return -EINVAL;
 
-       msi_lock_descs(dev);
+       guard(msi_descs_lock)(dev);
        msi_for_each_desc(entry, dev, MSI_DESC_ASSOCIATED) {
                if (irq_has_action(entry->irq))
                        continue;
                ret = ntbm_msi_setup_callback(ntb, entry, msi_desc);
                if (ret) {
                        devm_free_irq(&ntb->dev, entry->irq, dev_id);
-                       goto unlock;
+                       return ret;
                }
-
-               ret = entry->irq;
-               goto unlock;
+               return entry->irq;
        }
-       ret = -ENODEV;
-
-unlock:
-       msi_unlock_descs(dev);
-       return ret;
+       return -ENODEV;
 }
 EXPORT_SYMBOL(ntbm_msi_request_threaded_irq);