Message ID | 20200325191830.16553-7-f4bug@amsat.org |
---|---|
State | New |
Headers | show |
Series | hw: Add missing error-propagation code | expand |
On Wed, Mar 25, 2020 at 12:24 PM Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > > Running the coccinelle script produced: > > $ spatch \ > --macro-file scripts/cocci-macro-file.h --include-headers \ > --sp-file scripts/coccinelle/object_property_missing_error_propagate.cocci \ > --keep-comments --smpl-spacing --dir hw > > [[manual check required: error_propagate() might be missing in object_property_set_link() hw//dma/xilinx_axidma.c:542:4]] > > Add the missing error_propagate() after manual review. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/dma/xilinx_axidma.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c > index 018f36991b..6e3406321c 100644 > --- a/hw/dma/xilinx_axidma.c > +++ b/hw/dma/xilinx_axidma.c > @@ -521,39 +521,42 @@ static const MemoryRegionOps axidma_ops = { > static void xilinx_axidma_realize(DeviceState *dev, Error **errp) > { > XilinxAXIDMA *s = XILINX_AXI_DMA(dev); > XilinxAXIDMAStreamSlave *ds = XILINX_AXI_DMA_DATA_STREAM(&s->rx_data_dev); > XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM( > &s->rx_control_dev); > Error *local_err = NULL; > > object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA, > (Object **)&ds->dma, > object_property_allow_set_link, > OBJ_PROP_LINK_STRONG, > &local_err); > object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA, > (Object **)&cs->dma, > object_property_allow_set_link, > OBJ_PROP_LINK_STRONG, > &local_err); > if (local_err) { > goto xilinx_axidma_realize_fail; > } > object_property_set_link(OBJECT(ds), OBJECT(s), "dma", &local_err); > + if (local_err) { > + goto xilinx_axidma_realize_fail; > + } > object_property_set_link(OBJECT(cs), OBJECT(s), "dma", &local_err); > if (local_err) { > goto xilinx_axidma_realize_fail; > } > > int i; > > for (i = 0; i < 2; i++) { > struct Stream *st = &s->streams[i]; > > st->nr = i; > st->ptimer = ptimer_init(timer_hit, st, PTIMER_POLICY_DEFAULT); > ptimer_transaction_begin(st->ptimer); > ptimer_set_freq(st->ptimer, s->freqhz); > ptimer_transaction_commit(st->ptimer); > } > return; > -- > 2.21.1 > >
On Wed, 25 Mar 2020 at 19:18, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > > Running the coccinelle script produced: > > $ spatch \ > --macro-file scripts/cocci-macro-file.h --include-headers \ > --sp-file scripts/coccinelle/object_property_missing_error_propagate.cocci \ > --keep-comments --smpl-spacing --dir hw > > [[manual check required: error_propagate() might be missing in object_property_set_link() hw//dma/xilinx_axidma.c:542:4]] > > Add the missing error_propagate() after manual review. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/dma/xilinx_axidma.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c > index 018f36991b..6e3406321c 100644 > --- a/hw/dma/xilinx_axidma.c > +++ b/hw/dma/xilinx_axidma.c > @@ -521,39 +521,42 @@ static const MemoryRegionOps axidma_ops = { > static void xilinx_axidma_realize(DeviceState *dev, Error **errp) > { > XilinxAXIDMA *s = XILINX_AXI_DMA(dev); > XilinxAXIDMAStreamSlave *ds = XILINX_AXI_DMA_DATA_STREAM(&s->rx_data_dev); > XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM( > &s->rx_control_dev); > Error *local_err = NULL; > > object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA, > (Object **)&ds->dma, > object_property_allow_set_link, > OBJ_PROP_LINK_STRONG, > &local_err); Isn't there also a check on local_err missing here ? > object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA, > (Object **)&cs->dma, > object_property_allow_set_link, > OBJ_PROP_LINK_STRONG, > &local_err); > if (local_err) { > goto xilinx_axidma_realize_fail; > } > object_property_set_link(OBJECT(ds), OBJECT(s), "dma", &local_err); > + if (local_err) { > + goto xilinx_axidma_realize_fail; > + } > object_property_set_link(OBJECT(cs), OBJECT(s), "dma", &local_err); > if (local_err) { > goto xilinx_axidma_realize_fail; > } thanks -- PMM
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 018f36991b..6e3406321c 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -521,39 +521,42 @@ static const MemoryRegionOps axidma_ops = { static void xilinx_axidma_realize(DeviceState *dev, Error **errp) { XilinxAXIDMA *s = XILINX_AXI_DMA(dev); XilinxAXIDMAStreamSlave *ds = XILINX_AXI_DMA_DATA_STREAM(&s->rx_data_dev); XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM( &s->rx_control_dev); Error *local_err = NULL; object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA, (Object **)&ds->dma, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, &local_err); object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA, (Object **)&cs->dma, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, &local_err); if (local_err) { goto xilinx_axidma_realize_fail; } object_property_set_link(OBJECT(ds), OBJECT(s), "dma", &local_err); + if (local_err) { + goto xilinx_axidma_realize_fail; + } object_property_set_link(OBJECT(cs), OBJECT(s), "dma", &local_err); if (local_err) { goto xilinx_axidma_realize_fail; } int i; for (i = 0; i < 2; i++) { struct Stream *st = &s->streams[i]; st->nr = i; st->ptimer = ptimer_init(timer_hit, st, PTIMER_POLICY_DEFAULT); ptimer_transaction_begin(st->ptimer); ptimer_set_freq(st->ptimer, s->freqhz); ptimer_transaction_commit(st->ptimer); } return;
Running the coccinelle script produced: $ spatch \ --macro-file scripts/cocci-macro-file.h --include-headers \ --sp-file scripts/coccinelle/object_property_missing_error_propagate.cocci \ --keep-comments --smpl-spacing --dir hw [[manual check required: error_propagate() might be missing in object_property_set_link() hw//dma/xilinx_axidma.c:542:4]] Add the missing error_propagate() after manual review. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- hw/dma/xilinx_axidma.c | 3 +++ 1 file changed, 3 insertions(+)