On Thu, Feb 18, 2016 at 7:18 AM, Andrew Cooper <andrew.coop...@citrix.com>
wrote:

> On 18/02/16 14:16, Razvan Cojocaru wrote:
> > On 02/18/2016 04:10 PM, Tamas K Lengyel wrote:
> >> On Feb 18, 2016 03:46, "Razvan Cojocaru" <rcojoc...@bitdefender.com
> >> <mailto:rcojoc...@bitdefender.com>> wrote:
> >>> On 02/18/2016 12:45 PM, Corneliu ZUZU wrote:
> >>>> c/s f5365e6: "xen/vm-events: Move parts of monitor_domctl code to
> >> common-side",
> >>>> introduced a use without initialization issue.
> >>>> hvm_event_breakpoint calls hvm_event_traps(&req) and if sync is true
> >> that
> >>>> ors some bits into req->flags which was never initialised.
> >>>> Reported by Coverity Scan.
> >>>>
> >>>> Initializes req @ hvm_event_breakpoint entry.
> >>>>
> >>>> Signed-off-by: Corneliu ZUZU <cz...@bitdefender.com
> >> <mailto:cz...@bitdefender.com>>
> >>>> ---
> >>>>  xen/arch/x86/hvm/event.c | 2 +-
> >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/xen/arch/x86/hvm/event.c b/xen/arch/x86/hvm/event.c
> >>>> index 874a36c..cb9c152 100644
> >>>> --- a/xen/arch/x86/hvm/event.c
> >>>> +++ b/xen/arch/x86/hvm/event.c
> >>>> @@ -173,7 +173,7 @@ int hvm_event_breakpoint(unsigned long rip,
> >>>>  {
> >>>>      struct vcpu *curr = current;
> >>>>      struct arch_domain *ad = &curr->domain->arch;
> >>>> -    vm_event_request_t req;
> >>>> +    vm_event_request_t req = {};
> >> Should this be = { 0 } instead? Also, as I recall the request is not
> >> initialized on any of the paths, so we might as well do it for all of
> >> them, not just here. It would help avoid the listener erronously using
> >> some fields that were not actually initialized as well.
> > That should achieve the same thing. I first looked up "= {}" in the Xen
> > source code and found:
> >
> > $ grep -R "= {}"
> > arch/arm/domain_build.c: struct kernel_info kinfo = {};
> > arch/x86/time.c: struct vcpu_time_info *u, _u = {};
> > arch/x86/tboot.c: uint8_t nonce[16] = {};
> > arch/x86/tboot.c: uint8_t nonce[16] = {};
> > arch/x86/tboot.c: uint8_t nonce[16] = {};
> > arch/x86/traps.c: unsigned char insns_before[8] = {}, insns_after[16] =
> {};
> > arch/x86/x86_emulate/x86_emulate.c: union vex vex = {};
> > arch/x86/x86_emulate/x86_emulate.c: struct x86_emulate_stub stub = {};
> > arch/x86/cpu/mtrr/generic.c:struct mtrr_state mtrr_state = {};
> > arch/x86/cpu/common.c:const struct cpu_dev *__read_mostly
> > cpu_devs[X86_VENDOR_NUM] = {};
> > arch/x86/domain.c: unsigned long total[MASK_EXTR(PGT_type_mask,
> > PGT_type_mask) + 1] = {};
> > tools/kconfig/expr.c: union string_value lval = {}, rval = {};
> > common/grant_table.c: struct gnttab_copy_buf src = {};
> > common/grant_table.c: struct gnttab_copy_buf dest = {};
> >
> > So I thought that that's the prevailing convention. I've now searched
> > for "= {0}", and I see that that has also been done, so I suppose either
> > way is fine as far as the coding style goes?
> >
> > $ grep -R "= {0}"
> > arch/arm/mm.c:    lpae_t pte = {0};
> > arch/arm/mm.c:    lpae_t pte = {0};
> > drivers/char/exynos4210-uart.c:} exynos4210_com = {0};
> > drivers/char/pl011.c:} pl011_com = {0};
> > drivers/char/omap-uart.c:} omap_com = {0};
> > drivers/char/scif-uart.c:} scif_com = {0};
> > drivers/char/cadence-uart.c:} cuart_com = {0};
> > tools/kconfig/nconf.gui.c:attributes_t attributes[ATTR_MAX+1] = {0};
> > crypto/vmac.c:    uint64_t in[2] = {0}, out[2];
>
> The two are equivalent as far as C goes.  I prefer the former as it is
> slightly shorter.


OK, as long as they are equivalent I'm fine with either. I always use the
{0} syntax, it looks more explicit to me, so just wanted to double-check
that it means the same thing.

Thanks,
Tamas
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to