Message ID | 20110704115314.7c15c6ac@b012350-ux (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 7/4/2011 5:53 AM, sebastien dugue wrote: > > This fixes the following warning issued by valgrind: > > ==5287== Syscall param ioctl(generic) points to uninitialised byte(s) > ==5287== at 0x3C466D95D7: ioctl (in /lib64/libc-2.12.so) > ==5287== by 0x526C292: umad_register (umad.c:947) > ==5287== by 0x568D206: smp_engine_init (query_smp.c:228) > ==5287== by 0x5689F8F: ibnd_discover_fabric (ibnetdisc.c:537) > ==5287== by 0x411700: devmgr_discover_fabric (devmgr_discover.c:66) > > Signed-off-by: Jean-Vincent Ficet <jean-vincent.ficet@bull.net> > > --- > > diff --git a/src/umad.c b/src/umad.c > index 45a9423..cac46a4 100644 > --- a/src/umad.c > +++ b/src/umad.c > @@ -892,6 +892,7 @@ int umad_register_oui(int fd, int mgmt_class, uint8_t rmpp_version, > return -EINVAL; > } > > + memset(&req, 0, sizeof(req)); > req.qpn = 1; > req.mgmt_class = mgmt_class; > req.mgmt_class_version = 1; > @@ -928,6 +929,7 @@ int umad_register(int fd, int mgmt_class, int mgmt_version, > ("fd %d mgmt_class %u mgmt_version %u rmpp_version %d method_mask %p", > fd, mgmt_class, mgmt_version, rmpp_version, method_mask); > > + memset(&req, 0, sizeof(req)); > req.qpn = qp = (mgmt_class == 0x1 || mgmt_class == 0x81) ? 0 : 1; > req.mgmt_class = mgmt_class; > req.mgmt_class_version = mgmt_version; I think this is a "false positive" in valgrind. memset of the request isn't really needed for either of these APIs as all input fields are filled in by the caller and the only one which isn't is id which is an output field. -- Hal -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 05 Jul 2011 07:41:17 -0400 Hal Rosenstock <hal@dev.mellanox.co.il> wrote: > On 7/4/2011 5:53 AM, sebastien dugue wrote: > > > > This fixes the following warning issued by valgrind: > > > > ==5287== Syscall param ioctl(generic) points to uninitialised byte(s) > > ==5287== at 0x3C466D95D7: ioctl (in /lib64/libc-2.12.so) > > ==5287== by 0x526C292: umad_register (umad.c:947) > > ==5287== by 0x568D206: smp_engine_init (query_smp.c:228) > > ==5287== by 0x5689F8F: ibnd_discover_fabric (ibnetdisc.c:537) > > ==5287== by 0x411700: devmgr_discover_fabric (devmgr_discover.c:66) > > > > Signed-off-by: Jean-Vincent Ficet <jean-vincent.ficet@bull.net> > > > > --- > > > > diff --git a/src/umad.c b/src/umad.c > > index 45a9423..cac46a4 100644 > > --- a/src/umad.c > > +++ b/src/umad.c > > @@ -892,6 +892,7 @@ int umad_register_oui(int fd, int mgmt_class, uint8_t rmpp_version, > > return -EINVAL; > > } > > > > + memset(&req, 0, sizeof(req)); > > req.qpn = 1; > > req.mgmt_class = mgmt_class; > > req.mgmt_class_version = 1; > > @@ -928,6 +929,7 @@ int umad_register(int fd, int mgmt_class, int mgmt_version, > > ("fd %d mgmt_class %u mgmt_version %u rmpp_version %d method_mask %p", > > fd, mgmt_class, mgmt_version, rmpp_version, method_mask); > > > > + memset(&req, 0, sizeof(req)); > > req.qpn = qp = (mgmt_class == 0x1 || mgmt_class == 0x81) ? 0 : 1; > > req.mgmt_class = mgmt_class; > > req.mgmt_class_version = mgmt_version; > > I think this is a "false positive" in valgrind. memset of the request > isn't really needed for either of these APIs as all input fields are > filled in by the caller and the only one which isn't is id which is an > output field. Ok then, it's no needed. Thanks, Sébastien. > > -- Hal -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 5 Jul 2011 20:17:18 +0200 Bart Van Assche <bvanassche@acm.org> wrote: > On Mon, Jul 4, 2011 at 11:53 AM, sebastien dugue > <sebastien.dugue@bull.net> wrote: > > > > This fixes the following warning issued by valgrind: > > > > ==5287== Syscall param ioctl(generic) points to uninitialised byte(s) > > ==5287== at 0x3C466D95D7: ioctl (in /lib64/libc-2.12.so) > > ==5287== by 0x526C292: umad_register (umad.c:947) > > ==5287== by 0x568D206: smp_engine_init (query_smp.c:228) > > ==5287== by 0x5689F8F: ibnd_discover_fabric (ibnetdisc.c:537) > > ==5287== by 0x411700: devmgr_discover_fabric (devmgr_discover.c:66) > > > > Signed-off-by: Jean-Vincent Ficet <jean-vincent.ficet@bull.net> > > > > --- > > > > diff --git a/src/umad.c b/src/umad.c > > index 45a9423..cac46a4 100644 > > --- a/src/umad.c > > +++ b/src/umad.c > > @@ -892,6 +892,7 @@ int umad_register_oui(int fd, int mgmt_class, uint8_t rmpp_version, > > return -EINVAL; > > } > > > > + memset(&req, 0, sizeof(req)); > > req.qpn = 1; > > req.mgmt_class = mgmt_class; > > req.mgmt_class_version = 1; > > @@ -928,6 +929,7 @@ int umad_register(int fd, int mgmt_class, int mgmt_version, > > ("fd %d mgmt_class %u mgmt_version %u rmpp_version %d method_mask %p", > > fd, mgmt_class, mgmt_version, rmpp_version, method_mask); > > > > + memset(&req, 0, sizeof(req)); > > req.qpn = qp = (mgmt_class == 0x1 || mgmt_class == 0x81) ? 0 : 1; > > req.mgmt_class = mgmt_class; > > req.mgmt_class_version = mgmt_version; > > A possible alternative approach is to develop a patch for Valgrind > that makes Valgrind ignore padding fields and/or output fields in the > pre-ioctl check. See also PRE(sys_ioctl) in source file > coregrind/m_syswrap/syswrap-linux.c or the documentation file > README_MISSING_SYSCALL_OR_IOCTL. Could be, but this is largely out of scope for me and I can live with the warning knowing it's a false positive. Thanks, Sébastien. > > Bart. > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/umad.c b/src/umad.c index 45a9423..cac46a4 100644 --- a/src/umad.c +++ b/src/umad.c @@ -892,6 +892,7 @@ int umad_register_oui(int fd, int mgmt_class, uint8_t rmpp_version, return -EINVAL; } + memset(&req, 0, sizeof(req)); req.qpn = 1; req.mgmt_class = mgmt_class; req.mgmt_class_version = 1; @@ -928,6 +929,7 @@ int umad_register(int fd, int mgmt_class, int mgmt_version, ("fd %d mgmt_class %u mgmt_version %u rmpp_version %d method_mask %p", fd, mgmt_class, mgmt_version, rmpp_version, method_mask); + memset(&req, 0, sizeof(req)); req.qpn = qp = (mgmt_class == 0x1 || mgmt_class == 0x81) ? 0 : 1; req.mgmt_class = mgmt_class; req.mgmt_class_version = mgmt_version;
This fixes the following warning issued by valgrind: ==5287== Syscall param ioctl(generic) points to uninitialised byte(s) ==5287== at 0x3C466D95D7: ioctl (in /lib64/libc-2.12.so) ==5287== by 0x526C292: umad_register (umad.c:947) ==5287== by 0x568D206: smp_engine_init (query_smp.c:228) ==5287== by 0x5689F8F: ibnd_discover_fabric (ibnetdisc.c:537) ==5287== by 0x411700: devmgr_discover_fabric (devmgr_discover.c:66) Signed-off-by: Jean-Vincent Ficet <jean-vincent.ficet@bull.net> ---