[dpdk-dev] eal: fix unchecked return value from library
Commit Message
Fix issue reported by Coverity.
Coverity ID 13194
The function returns a value that indicates an error condition. If this
is not checked, the error condition may not be handled correctly.
In pci_vfio_mp_sync_thread: Value returned from a library function is not
checked for errors before being used. This value may indicate an error condition.
Fixes: 2f4adfad0a69 ("vfio: add multiprocess support")
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
---
lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
> Fix issue reported by Coverity.
> Coverity ID 13194
>
> The function returns a value that indicates an error condition. If this is not
> checked, the error condition may not be handled correctly.
>
> In pci_vfio_mp_sync_thread: Value returned from a library function is not
> checked for errors before being used. This value may indicate an error
> condition.
>
> Fixes: 2f4adfad0a69 ("vfio: add multiprocess support")
>
> Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
> ---
> lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c
> b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c
> index d9188fd..2b136fc 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c
> @@ -287,7 +287,10 @@ pci_vfio_mp_sync_thread(void __rte_unused * arg)
> struct linger l;
> l.l_onoff = 1;
> l.l_linger = 60;
> - setsockopt(conn_sock, SOL_SOCKET, SO_LINGER, &l,
> sizeof(l));
> +
> + if (setsockopt(conn_sock, SOL_SOCKET, SO_LINGER, &l,
> sizeof(l)) < 0)
> + RTE_LOG(ERR, EAL, "Cannot set SO_LINGER option "
> + "on listen socket (%s)\n",
> strerror(errno));
>
> ret = vfio_mp_sync_receive_request(conn_sock);
>
> --
> 2.5.5
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
On Thu, 21 Apr 2016 13:56:57 +0200
Daniel Mrzyglod <danielx.t.mrzyglod@intel.com> wrote:
> + if (setsockopt(conn_sock, SOL_SOCKET, SO_LINGER, &l, sizeof(l)) < 0)
> + RTE_LOG(ERR, EAL, "Cannot set SO_LINGER option "
> + "on listen socket (%s)\n", strerror(errno));
Priority should be WARNING not ERR because it has no real impact on the application
usability
level
This determines the importance of the message. The levels are, in
order of decreasing importance:
LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
LOG_ERR error conditions
LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condition
LOG_INFO informational message
LOG_DEBUG debug-level message
@@ -287,7 +287,10 @@ pci_vfio_mp_sync_thread(void __rte_unused * arg)
struct linger l;
l.l_onoff = 1;
l.l_linger = 60;
- setsockopt(conn_sock, SOL_SOCKET, SO_LINGER, &l, sizeof(l));
+
+ if (setsockopt(conn_sock, SOL_SOCKET, SO_LINGER, &l, sizeof(l)) < 0)
+ RTE_LOG(ERR, EAL, "Cannot set SO_LINGER option "
+ "on listen socket (%s)\n", strerror(errno));
ret = vfio_mp_sync_receive_request(conn_sock);