@@ -800,6 +800,7 @@ static __attribute__((noreturn)) void *eal_intr_thread_main(__rte_unusedvoid*arg){structepoll_eventev;+memset(&ev,0,sizeof(ev));/* host thread, never break out */for(;;){
I wonder why valgrind is giving this false report.
The only place this data structure is used is here, and all fields
in epoll_event are correctly set.
TAILQ_FOREACH(src, &intr_sources, next) {
if (src->callbacks.tqh_first == NULL)
continue; /* skip those with no callbacks */
ev.events = EPOLLIN | EPOLLPRI;
ev.data.fd = src->intr_handle.fd;
/**
* add all the uio device file descriptor
* into wait list.
*/
if (epoll_ctl(pfd, EPOLL_CTL_ADD,
src->intr_handle.fd, &ev) < 0){
rte_panic("Error adding fd %d epoll_ctl, %s\n",
src->intr_handle.fd, strerror(errno));
A better patch would be to move the data structure into the
code block used, and get rid of the useless else (rte_panic never returns);
and fix the indentation, and use C99 initialization which should make valgrind
happier.
The moral is don't just slap memsets around
@@ -799,8 +799,6 @@ eal_intr_handle_interrupts(int pfd, unsigned totalfds)static__attribute__((noreturn))void*eal_intr_thread_main(__rte_unusedvoid*arg){-structepoll_eventev;-/* host thread, never break out */for(;;){/* build up the epoll fd with all descriptors we are to
@@ -834,20 +832,22 @@ eal_intr_thread_main(__rte_unused void *arg)TAILQ_FOREACH(src,&intr_sources,next){if(src->callbacks.tqh_first==NULL)continue;/* skip those with no callbacks */-ev.events=EPOLLIN|EPOLLPRI;-ev.data.fd=src->intr_handle.fd;++structepoll_eventev={+.events=EPOLLIN|EPOLLPRI,+.data.fd=src->intr_handle.fd,+};/***addalltheuiodevicefiledescriptor*intowaitlist.*/if(epoll_ctl(pfd,EPOLL_CTL_ADD,-src->intr_handle.fd,&ev)<0){+src->intr_handle.fd,&ev)<0)rte_panic("Error adding fd %d epoll_ctl, %s\n",src->intr_handle.fd,strerror(errno));-}-else-numfds++;++numfds++;}rte_spinlock_unlock(&intr_lock);/* serve the interrupt */
From: Thomas Monjalon <hidden> Date: 2016-03-17 14:19:45
Hi Stephen,
Please, could you turn it into a real patch with your sign-off?
Thanks
2016-02-14 12:22, Stephen Hemminger:
quoted hunk
A better patch would be to move the data structure into the
code block used, and get rid of the useless else (rte_panic never returns);
and fix the indentation, and use C99 initialization which should make valgrind
happier.
The moral is don't just slap memsets around
@@ -799,8 +799,6 @@ eal_intr_handle_interrupts(int pfd, unsigned totalfds)static__attribute__((noreturn))void*eal_intr_thread_main(__rte_unusedvoid*arg){-structepoll_eventev;-/* host thread, never break out */for(;;){/* build up the epoll fd with all descriptors we are to
@@ -834,20 +832,22 @@ eal_intr_thread_main(__rte_unused void *arg)TAILQ_FOREACH(src,&intr_sources,next){if(src->callbacks.tqh_first==NULL)continue;/* skip those with no callbacks */-ev.events=EPOLLIN|EPOLLPRI;-ev.data.fd=src->intr_handle.fd;++structepoll_eventev={+.events=EPOLLIN|EPOLLPRI,+.data.fd=src->intr_handle.fd,+};/***addalltheuiodevicefiledescriptor*intowaitlist.*/if(epoll_ctl(pfd,EPOLL_CTL_ADD,-src->intr_handle.fd,&ev)<0){+src->intr_handle.fd,&ev)<0)rte_panic("Error adding fd %d epoll_ctl, %s\n",src->intr_handle.fd,strerror(errno));-}-else-numfds++;++numfds++;}rte_spinlock_unlock(&intr_lock);/* serve the interrupt */
From: Stephen Hemminger <stephen@networkplumber.org> Date: 2016-03-17 17:19:31
On Thu, 17 Mar 2016 15:18:15 +0100
Thomas Monjalon [off-list ref] wrote:
Hi Stephen,
Please, could you turn it into a real patch with your sign-off?
Thanks
2016-02-14 12:22, Stephen Hemminger:
quoted
A better patch would be to move the data structure into the
code block used, and get rid of the useless else (rte_panic never returns);
and fix the indentation, and use C99 initialization which should make valgrind
happier.
The moral is don't just slap memsets around
@@ -799,8 +799,6 @@ eal_intr_handle_interrupts(int pfd, unsigned totalfds)static__attribute__((noreturn))void*eal_intr_thread_main(__rte_unusedvoid*arg){-structepoll_eventev;-/* host thread, never break out */for(;;){/* build up the epoll fd with all descriptors we are to
@@ -834,20 +832,22 @@ eal_intr_thread_main(__rte_unused void *arg)TAILQ_FOREACH(src,&intr_sources,next){if(src->callbacks.tqh_first==NULL)continue;/* skip those with no callbacks */-ev.events=EPOLLIN|EPOLLPRI;-ev.data.fd=src->intr_handle.fd;++structepoll_eventev={+.events=EPOLLIN|EPOLLPRI,+.data.fd=src->intr_handle.fd,+};/***addalltheuiodevicefiledescriptor*intowaitlist.*/if(epoll_ctl(pfd,EPOLL_CTL_ADD,-src->intr_handle.fd,&ev)<0){+src->intr_handle.fd,&ev)<0)rte_panic("Error adding fd %d epoll_ctl, %s\n",src->intr_handle.fd,strerror(errno));-}-else-numfds++;++numfds++;}rte_spinlock_unlock(&intr_lock);/* serve the interrupt */
Sure I thought Matthew would since he reported the issue and had the ability
to test it.
From: Matthew Hall <hidden> Date: 2016-03-17 23:00:56
On Thu, Mar 17, 2016 at 10:19:24AM -0700, Stephen Hemminger wrote:
quoted
quoted
A better patch would be to move the data structure into the
code block used, and get rid of the useless else (rte_panic never returns);
and fix the indentation, and use C99 initialization which should make valgrind
happier.
The moral is don't just slap memsets around
Hi guys,
As you probably read before, I am a security developer, not a low-level /
kernel guy, and my DPDK work is spare time only. So I try to limit the scope
of my DPDK patches where possible, to avoid making headaches for the full-time
team to the minimum required. I can try to redo or refactor all this unrelated
stuff in the code, but I wouldn't be as fast or accurate as you would.
Matthew.