mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	- Cleanup the firmware node for the new IRQ MSI domain properly, to
avoid leaking memory -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmPWd70ACgkQEsHwGGHe VUpTgxAAjKo7kjhyE9PjKA8tJ5pv6I/21tieu/JAmRyb8AVkhi21elXJaRoEPW4k 2TuSd0WMxZeoRJ1N366HcGPZcsldKN45v3xXEv1e3XSL6ZTAIFsYvwni6adwVocS ztnZBrMuHf1KZW/6ES956qGmWsum0rYcU2sr0kvnS9ihPiXJsbeLfNF1VXPwaH2y DTnTxgl/QtuipSQYOUvLSk1XBduvE+Wx8kE1S6TrdlWE9qsD/Jn1Jn7btaLQeHfs 27AXTNGYnVHeRZSVy6d38dIwU4Gh6LcLMFfTtNENIqTVCUfc/QcAb/gItDF0NvIr fgKbkdmI7jc0rIfLGlBUM8WZ0OaxopFwvchVywjcogDpCfLvJbgR7JplEKTfltgz 62IjvTF6vXUCcjySwu/C48EE2G7CWL0FtIcJofZsI0yTeHESkwFf1r5eOjnTV2ao M2QYGeToRtk7z9vb+pa0ZttD55TKXQKZDBv+lBRKLTy8SeIzlExJswIAuGTpWuKR ntwrdtekyM2HNir/l9ad1X2mjVblivEEv1hLMpsxPsthigWXDr+PZtQIxHCao8wj aKY4bI0F1AXByuKhQAwX/RVHUmB+AGrzJ/M5Fdj+ealQ6Nk+xCrPyTX2qDmveiSF NlQZpGCxV+gI/8q9YU4coJm1AioT8TSFsMxaufGZCreqqaWBXl0= =qrIZ -----END PGP SIGNATURE----- Merge tag 'irq_urgent_for_v6.2_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull irq fix from Borislav Petkov: - Cleanup the firmware node for the new IRQ MSI domain properly, to avoid leaking memory * tag 'irq_urgent_for_v6.2_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: genirq/msi: Free the fwnode created by msi_create_device_irq_domain()
This commit is contained in:
		
						commit
						ab072681ea
					
				
					 2 changed files with 6 additions and 2 deletions
				
			
		|  | @ -114,7 +114,7 @@ void irq_domain_free_fwnode(struct fwnode_handle *fwnode) | |||
| { | ||||
| 	struct irqchip_fwid *fwid; | ||||
| 
 | ||||
| 	if (WARN_ON(!is_fwnode_irqchip(fwnode))) | ||||
| 	if (!fwnode || WARN_ON(!is_fwnode_irqchip(fwnode))) | ||||
| 		return; | ||||
| 
 | ||||
| 	fwid = container_of(fwnode, struct irqchip_fwid, fwnode); | ||||
|  |  | |||
|  | @ -1000,7 +1000,7 @@ bool msi_create_device_irq_domain(struct device *dev, unsigned int domid, | |||
| fail: | ||||
| 	msi_unlock_descs(dev); | ||||
| free_fwnode: | ||||
| 	kfree(fwnode); | ||||
| 	irq_domain_free_fwnode(fwnode); | ||||
| free_bundle: | ||||
| 	kfree(bundle); | ||||
| 	return false; | ||||
|  | @ -1013,6 +1013,7 @@ free_bundle: | |||
|  */ | ||||
| void msi_remove_device_irq_domain(struct device *dev, unsigned int domid) | ||||
| { | ||||
| 	struct fwnode_handle *fwnode = NULL; | ||||
| 	struct msi_domain_info *info; | ||||
| 	struct irq_domain *domain; | ||||
| 
 | ||||
|  | @ -1025,7 +1026,10 @@ void msi_remove_device_irq_domain(struct device *dev, unsigned int domid) | |||
| 
 | ||||
| 	dev->msi.data->__domains[domid].domain = NULL; | ||||
| 	info = domain->host_data; | ||||
| 	if (irq_domain_is_msi_device(domain)) | ||||
| 		fwnode = domain->fwnode; | ||||
| 	irq_domain_remove(domain); | ||||
| 	irq_domain_free_fwnode(fwnode); | ||||
| 	kfree(container_of(info, struct msi_domain_template, info)); | ||||
| 
 | ||||
| unlock: | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Linus Torvalds
						Linus Torvalds