The return value of vnic_dev_notify_set() is silently ignored in
enic_dev_init(), so a memory allocation failure or hardware command
error goes unnoticed and the driver continues with uninitialized
notification state.

Check the return value and propagate the error to abort probe when
notification setup fails.

Fixes: fefed3d1e62c ("enic: new driver")
Cc: [email protected]

Signed-off-by: Alexey Simakov <[email protected]>
---

v3 changes: add log message

v2 link: 
https://patches.dpdk.org/project/dpdk/patch/[email protected]/
v2 changes: validate return code of vnic_dev_notify_set() in driver init section

v1 link: 
https://patches.dpdk.org/project/dpdk/patch/[email protected]/

 drivers/net/enic/enic_main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index 2696fa77d4..2a1a65d8da 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1887,7 +1887,11 @@ static int enic_dev_init(struct enic *enic)
        LIST_INIT(&enic->flows);
 
        /* set up link status checking */
-       vnic_dev_notify_set(enic->vdev, -1); /* No Intr for notify */
+       err = vnic_dev_notify_set(enic->vdev, -1); /* No Intr for notify */
+       if (err) {
+               dev_err(enic, "failed to enable notify buffer\n");
+               return err;
+       }
 
        enic->overlay_offload = false;
        /*
-- 
2.53.0

Reply via email to