mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-19 20:05:08 +00:00
xen: branch for v6.4-rc4
-----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRTLbB6QfY48x44uB6AXGG7T9hjvgUCZHGVRAAKCRCAXGG7T9hj vqtJAQDizKasLE7tSnfs/FrZ/4xPaDLe3bQifMx2C1dtYCjRcAD/ciZSa1L0WzZP dpEZnlYRzsR3bwLktQEMQFOvlbh1SwE= =K860 -----END PGP SIGNATURE----- Merge tag 'for-linus-6.4-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip Pull xen fixes from Juergen Gross: - a double free fix in the Xen pvcalls backend driver - a fix for a regression causing the MSI related sysfs entries to not being created in Xen PV guests - a fix in the Xen blkfront driver for handling insane input data better * tag 'for-linus-6.4-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: x86/pci/xen: populate MSI sysfs entries xen/pvcalls-back: fix double frees with pvcalls_new_active_socket() xen/blkfront: Only check REQ_FUA for writes
This commit is contained in:
commit
4e893b5aa4
@ -198,7 +198,7 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
||||
i++;
|
||||
}
|
||||
kfree(v);
|
||||
return 0;
|
||||
return msi_device_populate_sysfs(&dev->dev);
|
||||
|
||||
error:
|
||||
if (ret == -ENOSYS)
|
||||
@ -254,7 +254,7 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
||||
dev_dbg(&dev->dev,
|
||||
"xen: msi --> pirq=%d --> irq=%d\n", pirq, irq);
|
||||
}
|
||||
return 0;
|
||||
return msi_device_populate_sysfs(&dev->dev);
|
||||
|
||||
error:
|
||||
dev_err(&dev->dev, "Failed to create MSI%s! ret=%d!\n",
|
||||
@ -346,7 +346,7 @@ static int xen_initdom_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
}
|
||||
ret = 0;
|
||||
ret = msi_device_populate_sysfs(&dev->dev);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
@ -394,6 +394,8 @@ static void xen_teardown_msi_irqs(struct pci_dev *dev)
|
||||
xen_destroy_irq(msidesc->irq + i);
|
||||
msidesc->irq = 0;
|
||||
}
|
||||
|
||||
msi_device_destroy_sysfs(&dev->dev);
|
||||
}
|
||||
|
||||
static void xen_pv_teardown_msi_irqs(struct pci_dev *dev)
|
||||
|
@ -780,7 +780,8 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri
|
||||
ring_req->u.rw.handle = info->handle;
|
||||
ring_req->operation = rq_data_dir(req) ?
|
||||
BLKIF_OP_WRITE : BLKIF_OP_READ;
|
||||
if (req_op(req) == REQ_OP_FLUSH || req->cmd_flags & REQ_FUA) {
|
||||
if (req_op(req) == REQ_OP_FLUSH ||
|
||||
(req_op(req) == REQ_OP_WRITE && (req->cmd_flags & REQ_FUA))) {
|
||||
/*
|
||||
* Ideally we can do an unordered flush-to-disk.
|
||||
* In case the backend onlysupports barriers, use that.
|
||||
|
@ -325,8 +325,10 @@ static struct sock_mapping *pvcalls_new_active_socket(
|
||||
void *page;
|
||||
|
||||
map = kzalloc(sizeof(*map), GFP_KERNEL);
|
||||
if (map == NULL)
|
||||
if (map == NULL) {
|
||||
sock_release(sock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
map->fedata = fedata;
|
||||
map->sock = sock;
|
||||
@ -418,10 +420,8 @@ static int pvcalls_back_connect(struct xenbus_device *dev,
|
||||
req->u.connect.ref,
|
||||
req->u.connect.evtchn,
|
||||
sock);
|
||||
if (!map) {
|
||||
if (!map)
|
||||
ret = -EFAULT;
|
||||
sock_release(sock);
|
||||
}
|
||||
|
||||
out:
|
||||
rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
|
||||
@ -561,7 +561,6 @@ static void __pvcalls_back_accept(struct work_struct *work)
|
||||
sock);
|
||||
if (!map) {
|
||||
ret = -EFAULT;
|
||||
sock_release(sock);
|
||||
goto out_error;
|
||||
}
|
||||
|
||||
|
@ -383,6 +383,13 @@ int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc);
|
||||
void arch_teardown_msi_irq(unsigned int irq);
|
||||
int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
|
||||
void arch_teardown_msi_irqs(struct pci_dev *dev);
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACKS */
|
||||
|
||||
/*
|
||||
* Xen uses non-default msi_domain_ops and hence needs a way to populate sysfs
|
||||
* entries of MSI IRQs.
|
||||
*/
|
||||
#if defined(CONFIG_PCI_XEN) || defined(CONFIG_PCI_MSI_ARCH_FALLBACKS)
|
||||
#ifdef CONFIG_SYSFS
|
||||
int msi_device_populate_sysfs(struct device *dev);
|
||||
void msi_device_destroy_sysfs(struct device *dev);
|
||||
@ -390,7 +397,7 @@ void msi_device_destroy_sysfs(struct device *dev);
|
||||
static inline int msi_device_populate_sysfs(struct device *dev) { return 0; }
|
||||
static inline void msi_device_destroy_sysfs(struct device *dev) { }
|
||||
#endif /* !CONFIG_SYSFS */
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACKS */
|
||||
#endif /* CONFIG_PCI_XEN || CONFIG_PCI_MSI_ARCH_FALLBACKS */
|
||||
|
||||
/*
|
||||
* The restore hook is still available even for fully irq domain based
|
||||
|
@ -542,7 +542,7 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI_MSI_ARCH_FALLBACKS
|
||||
#if defined(CONFIG_PCI_MSI_ARCH_FALLBACKS) || defined(CONFIG_PCI_XEN)
|
||||
/**
|
||||
* msi_device_populate_sysfs - Populate msi_irqs sysfs entries for a device
|
||||
* @dev: The device (PCI, platform etc) which will get sysfs entries
|
||||
@ -574,7 +574,7 @@ void msi_device_destroy_sysfs(struct device *dev)
|
||||
msi_for_each_desc(desc, dev, MSI_DESC_ALL)
|
||||
msi_sysfs_remove_desc(dev, desc);
|
||||
}
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACK */
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACK || CONFIG_PCI_XEN */
|
||||
#else /* CONFIG_SYSFS */
|
||||
static inline int msi_sysfs_create_group(struct device *dev) { return 0; }
|
||||
static inline int msi_sysfs_populate_desc(struct device *dev, struct msi_desc *desc) { return 0; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user