[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 13/15] x86/IRQ: tighten vector checks
>>> On 20.05.19 at 16:04, <roger.pau@xxxxxxxxxx> wrote: > On Fri, May 17, 2019 at 04:52:32AM -0600, Jan Beulich wrote: >> Use valid_irq_vector() rather than "> 0". >> >> Also replace an open-coded use of IRQ_VECTOR_UNASSIGNED. >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Thanks. > The question I have below is not directly related to the usage of > valid_irq_vector, but rather with the existing code. > >> @@ -452,15 +452,18 @@ static vmask_t *irq_get_used_vector_mask >> int vector; >> >> vector = irq_to_vector(irq); >> - if ( vector > 0 ) >> + if ( valid_irq_vector(vector) ) >> { >> - printk(XENLOG_INFO "IRQ %d already assigned vector %d\n", >> + printk(XENLOG_INFO "IRQ%d already assigned vector %02x\n", >> irq, vector); >> >> ASSERT(!test_bit(vector, ret)); >> >> set_bit(vector, ret); >> } >> + else if ( vector != IRQ_VECTOR_UNASSIGNED ) >> + printk(XENLOG_WARNING "IRQ%d mapped to bogus vector %02x\n", >> + irq, vector); > > Maybe add an assert_unreachable here? It seems really bogus to call > irq_get_used_vector_mask with an unassigned vector. How that? This would e.g. get called the very first time a vector is to be assigned. But I'm afraid I'm a little confused anyway by the wording you use - after all this is the code path dealing with an IRQ _not_ being marked as having no vector assigned, but also not having a valid vector. > But I'm not sure I fully understand this piece of code, neither why a > vector without a IRQ assigned can have a vector assigned. Is this > covering up for the lack of cleanup elsewhere? I don't think so, no. However, users of irq_to_vector() need to be careful: The function can legitimately return 0 (besides IRQ_VECTOR_UNASSIGNED) as an error indication. I've tried to do away with this, but quickly realized I'd better not do so. I've not seen the printk() trigger, but I'd rather see the printk() log a message telling us that we also need to exclude vector 0 than a wrong assertion to fire. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |