|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing
Jan Beulich wrote:
Weidong Han <weidong.han@xxxxxxxxx> 24.03.10 10:02 >>>
it cannot check entry_header->length < sizeof(struct acpi_table_XXX),
which is not the actual size in acpi table.
I don't follow here: Minimally checking against
sizeof(struct acpi_dmar_entry_header) should be possible. But I can't
even see why checking for sizeof(struct acpi_table_XXX) in the
individual case statements can't be done.
Jan
Re-checked the code. You're right. Updated the patch to check with
sizeof(struct acpi_table_XXX).
Idea-by: Jan Beulich <jbeulich@xxxxxxxxxx <mailto:jbeulich@xxxxxxxxxx>>
Signed-off-by: Weidong Han <weidong.han@xxxxxxxxx>
diff -r a4eac162dcb9 xen/drivers/passthrough/vtd/dmar.c
--- a/xen/drivers/passthrough/vtd/dmar.c Thu Mar 25 01:05:03 2010 +0800
+++ b/xen/drivers/passthrough/vtd/dmar.c Thu Mar 25 03:53:21 2010 +0800
@@ -659,6 +659,23 @@ static int __init acpi_parse_dmar(struct
while ( ((unsigned long)entry_header) <
(((unsigned long)dmar) + table->length) )
{
+ /*
+ * entry_header length should not smaller than size of
+ * any acpi dmar structures. also avoid endless looping
+ * when the lenght is 0 on some bad BIOSs
+ */
+ if ( entry_header->length < sizeof(struct acpi_table_drhd) &&
+ entry_header->length < sizeof(struct acpi_table_rmrr) &&
+ entry_header->length < sizeof(struct acpi_table_atsr) &&
+ entry_header->length < sizeof(struct acpi_table_rhsa) )
+ {
+ dprintk(XENLOG_WARNING VTDPREFIX,
+ "Invalid entry_header length: 0x%x\n",
+ entry_header->length);
+ ret = -EINVAL;
+ break;
+ }
+
switch ( entry_header->type )
{
case ACPI_DMAR_DRHD:
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, (continued)
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Pasi Kärkkäinen
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Keir Fraser
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Pasi Kärkkäinen
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Weidong Han
- RE: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Cui, Dexuan
- RE: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- RE: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Cui, Dexuan
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Weidong Han
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Pasi Kärkkäinen
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing,
Weidong Han <=
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Weidong Han
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Weidong Han
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Weidong Han
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Jan Beulich
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Pasi Kärkkäinen
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Keir Fraser
- Re: [Xen-devel] Xen 4.0.0-rc7 problem/hang with vt-d DMAR parsing, Pasi Kärkkäinen
|
|
|
|
|