Re: [PATCH-for-5.0 06/12] hw/dma/xilinx_axidma: Add missing error-propagation code

2020-03-26 Thread Peter Maydell
On Wed, 25 Mar 2020 at 19:18, Philippe Mathieu-Daudé  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é 
> ---
>  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(>rx_data_dev);
>  XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM(
>  
> >rx_control_dev);
>  Error *local_err = NULL;
>
>  object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA,
>   (Object **)>dma,
>   object_property_allow_set_link,
>   OBJ_PROP_LINK_STRONG,
>   _err);

Isn't there also a check on local_err missing here ?

>  object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA,
>   (Object **)>dma,
>   object_property_allow_set_link,
>   OBJ_PROP_LINK_STRONG,
>   _err);
>  if (local_err) {
>  goto xilinx_axidma_realize_fail;
>  }
>  object_property_set_link(OBJECT(ds), OBJECT(s), "dma", _err);
> +if (local_err) {
> +goto xilinx_axidma_realize_fail;
> +}
>  object_property_set_link(OBJECT(cs), OBJECT(s), "dma", _err);
>  if (local_err) {
>  goto xilinx_axidma_realize_fail;
>  }

thanks
-- PMM



Re: [PATCH-for-5.0 06/12] hw/dma/xilinx_axidma: Add missing error-propagation code

2020-03-25 Thread Alistair Francis
On Wed, Mar 25, 2020 at 12:24 PM Philippe Mathieu-Daudé  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é 

Reviewed-by: Alistair Francis 

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(>rx_data_dev);
>  XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM(
>  
> >rx_control_dev);
>  Error *local_err = NULL;
>
>  object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA,
>   (Object **)>dma,
>   object_property_allow_set_link,
>   OBJ_PROP_LINK_STRONG,
>   _err);
>  object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA,
>   (Object **)>dma,
>   object_property_allow_set_link,
>   OBJ_PROP_LINK_STRONG,
>   _err);
>  if (local_err) {
>  goto xilinx_axidma_realize_fail;
>  }
>  object_property_set_link(OBJECT(ds), OBJECT(s), "dma", _err);
> +if (local_err) {
> +goto xilinx_axidma_realize_fail;
> +}
>  object_property_set_link(OBJECT(cs), OBJECT(s), "dma", _err);
>  if (local_err) {
>  goto xilinx_axidma_realize_fail;
>  }
>
>  int i;
>
>  for (i = 0; i < 2; i++) {
>  struct Stream *st = >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
>
>



[PATCH-for-5.0 06/12] hw/dma/xilinx_axidma: Add missing error-propagation code

2020-03-25 Thread Philippe Mathieu-Daudé
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é 
---
 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(>rx_data_dev);
 XilinxAXIDMAStreamSlave *cs = XILINX_AXI_DMA_CONTROL_STREAM(
 
>rx_control_dev);
 Error *local_err = NULL;
 
 object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA,
  (Object **)>dma,
  object_property_allow_set_link,
  OBJ_PROP_LINK_STRONG,
  _err);
 object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA,
  (Object **)>dma,
  object_property_allow_set_link,
  OBJ_PROP_LINK_STRONG,
  _err);
 if (local_err) {
 goto xilinx_axidma_realize_fail;
 }
 object_property_set_link(OBJECT(ds), OBJECT(s), "dma", _err);
+if (local_err) {
+goto xilinx_axidma_realize_fail;
+}
 object_property_set_link(OBJECT(cs), OBJECT(s), "dma", _err);
 if (local_err) {
 goto xilinx_axidma_realize_fail;
 }
 
 int i;
 
 for (i = 0; i < 2; i++) {
 struct Stream *st = >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