mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
x86: physdev_[un]map_pirq() use rcu_lock_target_domain_by_id().
More idiomatic, and avoids accidental failure to check caller privilege. For example, the unmap path was not checking for any privilege before calling unmap_domain_pirq_emuirq(), which can't be right. Signed-off-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
56bcfc196f
commit
f96101286a
1 file changed
+6
-13
+6
-13
@@ -87,14 +87,9 @@ static int physdev_map_pirq(struct physdev_map_pirq *map)
|
||||
struct msi_info _msi;
|
||||
void *map_data = NULL;
|
||||
|
||||
if ( !map )
|
||||
return -EINVAL;
|
||||
|
||||
d = (map->domid == DOMID_SELF) ? rcu_lock_current_domain()
|
||||
: rcu_lock_domain_by_id(map->domid);
|
||||
|
||||
if ( d == NULL )
|
||||
return -ESRCH;
|
||||
ret = rcu_lock_target_domain_by_id(map->domid, &d);
|
||||
if ( ret )
|
||||
return ret;
|
||||
|
||||
if ( map->domid == DOMID_SELF && is_hvm_domain(d) )
|
||||
{
|
||||
@@ -225,11 +220,9 @@ static int physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
|
||||
struct domain *d;
|
||||
int ret;
|
||||
|
||||
d = (unmap->domid == DOMID_SELF) ? rcu_lock_current_domain()
|
||||
: rcu_lock_domain_by_id(unmap->domid);
|
||||
|
||||
if ( d == NULL )
|
||||
return -ESRCH;
|
||||
ret = rcu_lock_target_domain_by_id(unmap->domid, &d);
|
||||
if ( ret )
|
||||
return ret;
|
||||
|
||||
if ( is_hvm_domain(d) )
|
||||
{
|
||||
|
||||