|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/2] x86: drop "index" parameter from get_free_pirq()
On 05/09/12 13:24, Jan Beulich wrote:
> It's unused.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -1816,7 +1816,7 @@ static inline bool_t is_free_pirq(const
> pirq->arch.hvm.emuirq == IRQ_UNBOUND));
> }
>
> -int get_free_pirq(struct domain *d, int type, int index)
> +int get_free_pirq(struct domain *d, int type)
> {
> int i;
>
> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -71,7 +71,7 @@ static int physdev_hvm_map_pirq(
> else
> {
> if ( *pirq < 0 )
> - *pirq = get_free_pirq(d, type, *index);
> + *pirq = get_free_pirq(d, type);
> ret = map_domain_emuirq_pirq(d, *pirq, *index);
Relatedly (and I had already noticed this but not got round to making a
patch because of other more urgent bugs)
You still have a chance here of passing an error into
map_domain_emuirq_pirq, in the pirq value. This is not a security issue
as map_domain_emuirq_pirq does range check pirq, but may turn into a
problem if the implementation of map_domain_emuirq_pirq changes. I
would say that for correctness sake, physdev_hvm_map_pirq() should range
check get_free_pirq(), even if this will lead to a double range check of
the value.
~Andrew
> }
> break;
> @@ -187,7 +187,7 @@ int physdev_map_pirq(domid_t domid, int
> }
> else
> {
> - pirq = get_free_pirq(d, type, *index);
> + pirq = get_free_pirq(d, type);
> if ( pirq < 0 )
> {
> dprintk(XENLOG_G_ERR, "dom%d: no free pirq\n", d->domain_id);
> @@ -705,7 +705,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H
> break;
>
> spin_lock(&d->event_lock);
> - ret = get_free_pirq(d, out.type, 0);
> + ret = get_free_pirq(d, out.type);
> if ( ret >= 0 )
> {
> struct pirq *info = pirq_get_info(d, ret);
> --- a/xen/include/asm-x86/irq.h
> +++ b/xen/include/asm-x86/irq.h
> @@ -136,7 +136,7 @@ int pirq_shared(struct domain *d , int i
> int map_domain_pirq(struct domain *d, int pirq, int irq, int type,
> void *data);
> int unmap_domain_pirq(struct domain *d, int pirq);
> -int get_free_pirq(struct domain *d, int type, int index);
> +int get_free_pirq(struct domain *d, int type);
> void free_domain_pirqs(struct domain *d);
> int map_domain_emuirq_pirq(struct domain *d, int pirq, int irq);
> int unmap_domain_pirq_emuirq(struct domain *d, int pirq);
>
>
>
--
Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer
T: +44 (0)1223 225 900, http://www.citrix.com
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |