[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xen/Coverity: Audit of MISSING_BREAK defects
Coverity uses several heuristics to identify when one case statement legitimately falls through into the next, and a comment as the final item in a case statement is one heuristic (the assumption being that it is a justification for the fallthrough). Use this to perform an audit of defects and hide the legitimate fallthroughs. No functional change. All identified fallthroughs are legitimate. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Coverity-IDs: 1055483, 1055484, 1055486 - 1055488, 1055490 - 1055496, 1055498 - 1055500, 1055501, 1220091 CC: Keir Fraser <keir@xxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> CC: Xen Coverity Team <coverity@xxxxxxx> --- xen/arch/x86/hvm/emulate.c | 1 + xen/arch/x86/hvm/svm/svm.c | 1 + xen/arch/x86/hvm/vlapic.c | 1 + xen/arch/x86/mm.c | 2 ++ xen/arch/x86/traps.c | 3 +++ xen/arch/x86/x86_64/compat/mm.c | 1 + xen/common/lib.c | 4 ++++ xen/common/schedule.c | 1 + 8 files changed, 14 insertions(+) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 636c909..c657bc6 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -161,6 +161,7 @@ static int hvmemul_do_io( put_page(ram_page); return X86EMUL_RETRY; } + /* fallthrough */ default: if ( ram_page ) put_page(ram_page); diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index a7655bd..018dd70 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -2378,6 +2378,7 @@ void svm_vmexit_handler(struct cpu_user_regs *regs) case NESTEDHVM_VMEXIT_ERROR: break; } + /* fallthrough */ case NESTEDHVM_VMEXIT_ERROR: gdprintk(XENLOG_ERR, "nestedsvm_check_intercepts() returned NESTEDHVM_VMEXIT_ERROR\n"); diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 5da6d8f..cee8699 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -762,6 +762,7 @@ static int vlapic_reg_write(struct vcpu *v, vlapic->hw.tdt_msr = 0; } vlapic->pt.irq = val & APIC_VECTOR_MASK; + /* fallthrough */ case APIC_LVTTHMR: /* LVT Thermal Monitor */ case APIC_LVTPC: /* LVT Performance Counter */ case APIC_LVT0: /* LVT LINT0 Reg */ diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index d4965da..12e5006 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2771,6 +2771,7 @@ int new_guest_cr3(unsigned long mfn) { case -EINTR: rc = -ERESTART; + /* fallthrough */ case -ERESTART: curr->arch.old_guest_table = page; break; @@ -3126,6 +3127,7 @@ long do_mmuext_op( { case -EINTR: rc = -ERESTART; + /* fallthrough */ case -ERESTART: curr->arch.old_guest_table = page; okay = 0; diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index f5516dc..057a7af 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -1739,7 +1739,9 @@ static int guest_io_okay( port>>3, 2) ) { default: x.bytes[0] = ~0; + /* fallthrough */ case 1: x.bytes[1] = ~0; + /* fallthrough */ case 0: break; } TOGGLE_MODE(); @@ -3320,6 +3322,7 @@ static void pci_serr_error(const struct cpu_user_regs *regs) { case 'd': /* 'dom0' */ nmi_hwdom_report(_XEN_NMIREASON_pci_serr); + /* fallthrough */ case 'i': /* 'ignore' */ /* Would like to print a diagnostic here but can't call printk() from NMI context -- raise a softirq instead. */ diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c index f90f611..1491ce3 100644 --- a/xen/arch/x86/x86_64/compat/mm.c +++ b/xen/arch/x86/x86_64/compat/mm.c @@ -292,6 +292,7 @@ int compat_mmuext_op(XEN_GUEST_HANDLE_PARAM(mmuext_op_compat_t) cmp_uops, break; case MMUEXT_NEW_USER_BASEPTR: rc = -EINVAL; + /* fallthrough */ case MMUEXT_TLB_FLUSH_LOCAL: case MMUEXT_TLB_FLUSH_MULTI: case MMUEXT_TLB_FLUSH_ALL: diff --git a/xen/common/lib.c b/xen/common/lib.c index 89c74ad..ae0bbb3 100644 --- a/xen/common/lib.c +++ b/xen/common/lib.c @@ -461,12 +461,16 @@ unsigned long long parse_size_and_unit(const char *s, const char **ps) { case 'T': case 't': ret <<= 10; + /* fallthrough */ case 'G': case 'g': ret <<= 10; + /* fallthrough */ case 'M': case 'm': ret <<= 10; + /* fallthrough */ case 'K': case 'k': ret <<= 10; + /* fallthrough */ case 'B': case 'b': s1++; break; diff --git a/xen/common/schedule.c b/xen/common/schedule.c index b73177f..ef79847 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -1179,6 +1179,7 @@ static void schedule(void) { case TASKLET_enqueued: set_bit(_TASKLET_scheduled, tasklet_work); + /* fallthrough */ case TASKLET_enqueued|TASKLET_scheduled: tasklet_work_scheduled = 1; break; -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |