[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] livepatch: Reject payloads with .alternative or .ex_table if support is not built-in.
commit aef04c007490e40d341d1f39c96bd1f7cf4f6376 Author: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> AuthorDate: Tue Sep 6 16:28:23 2016 -0400 Commit: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> CommitDate: Fri Sep 23 12:39:45 2016 -0400 livepatch: Reject payloads with .alternative or .ex_table if support is not built-in. If the payload had the sections mentioned but the hypervisor did not support some of them (say on ARM the .ex_table) - instead of ignoring them - it should forbid loading of such payload. Reviewed-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> Reviewed-by: Julien Grall <julien.grall@xxxxxxx> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- xen/common/livepatch.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index e14ded6..87a8df2 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -641,10 +641,10 @@ static int prepare_payload(struct payload *payload, sizeof(*region->frame[i].bugs); } -#ifdef CONFIG_HAS_ALTERNATIVE sec = livepatch_elf_sec_by_name(elf, ".altinstructions"); if ( sec ) { +#ifdef CONFIG_HAS_ALTERNATIVE struct alt_instr *a, *start, *end; if ( sec->sec->sh_size % sizeof(*a) ) @@ -671,13 +671,17 @@ static int prepare_payload(struct payload *payload, } } apply_alternatives(start, end); - } +#else + dprintk(XENLOG_ERR, LIVEPATCH "%s: We don't support alternative patching!\n", + elf->name); + return -EOPNOTSUPP; #endif + } -#ifdef CONFIG_HAS_EX_TABLE sec = livepatch_elf_sec_by_name(elf, ".ex_table"); if ( sec ) { +#ifdef CONFIG_HAS_EX_TABLE struct exception_table_entry *s, *e; if ( !sec->sec->sh_size || @@ -696,8 +700,12 @@ static int prepare_payload(struct payload *payload, region->ex = s; region->ex_end = e; - } +#else + dprintk(XENLOG_ERR, LIVEPATCH "%s: We don't support .ex_table!\n", + elf->name); + return -EOPNOTSUPP; #endif + } return 0; } -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |