]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
xen: privcmd: Fix possible access to a freed kirqfd instance
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 18 Jun 2024 09:42:29 +0000 (15:12 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:11:35 +0000 (11:11 +0200)
commite997b357b13a7d95de31681fc54fcc34235fa527
treeccd13af990cfe9197a0e14f04404dad01900e845
parent2b110cce19c8e1c04b8de388f531f3bed6e19283
xen: privcmd: Fix possible access to a freed kirqfd instance

[ Upstream commit 611ff1b1ae989a7bcce3e2a8e132ee30e968c557 ]

Nothing prevents simultaneous ioctl calls to privcmd_irqfd_assign() and
privcmd_irqfd_deassign(). If that happens, it is possible that a kirqfd
created and added to the irqfds_list by privcmd_irqfd_assign() may get
removed by another thread executing privcmd_irqfd_deassign(), while the
former is still using it after dropping the locks.

This can lead to a situation where an already freed kirqfd instance may
be accessed and cause kernel oops.

Use SRCU locking to prevent the same, as is done for the KVM
implementation for irqfds.

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/9e884af1f1f842eacbb7afc5672c8feb4dea7f3f.1718703669.git.viresh.kumar@linaro.org
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/xen/privcmd.c