This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wed, Apr 02, 2014 at 05:33:44AM -0400, Mike Frysinger wrote: > On Wed 02 Apr 2014 10:23:55 Siddhesh Poyarekar wrote: > > On Tue, Apr 01, 2014 at 11:26:16AM -0700, Roland McGrath wrote: > > > If you bzero before explicitly filling fields, does the compiler optimize > > > to only zeroing the one unused field? If so, that seems more futureproof. > > > > It doesn't quite, but (now that I checked) it really only results in a > > couple of additional instructions (as opposed to a function call that > > I had implicitly assumed), so I'll add it anyway if you think it is > > OK. This obviously also needs the previous patch that consolidates > > the head initialization code. > > as a general thing, can we not use bzero ? like ever ? memset should be > exactly the same. Yeah, sorry. Here: diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h index c069bf6..954fe99 100644 --- a/nscd/nscd-client.h +++ b/nscd/nscd-client.h @@ -240,6 +240,10 @@ static inline time_t datahead_init_common (struct datahead *head, nscd_ssize_t allocsize, nscd_ssize_t recsize, uint32_t ttl) { + /* Initialize so that we don't write out junk in uninitialized data to the + cache. */ + memset (head, 0, sizeof (*head)); + head->allocsize = allocsize; head->recsize = recsize; head->usable = true; @@ -253,18 +257,21 @@ static inline time_t datahead_init_pos (struct datahead *head, nscd_ssize_t allocsize, nscd_ssize_t recsize, uint8_t nreloads, uint32_t ttl) { + time_t ret = datahead_init_common (head, allocsize, recsize, ttl); head->notfound = false; head->nreloads = nreloads; - return datahead_init_common (head, allocsize, recsize, ttl); + return ret; } static inline time_t datahead_init_neg (struct datahead *head, nscd_ssize_t allocsize, nscd_ssize_t recsize, uint32_t ttl) { + time_t ret = datahead_init_common (head, allocsize, recsize, ttl); + /* We don't need to touch nreloads here since it is set to our desired value + (0) when we bzero the structure. */ head->notfound = true; - head->nreloads = 0; - return datahead_init_common (head, allocsize, recsize, ttl); + return ret; } /* Structure for one hash table entry. */
Attachment:
pgp7mA5TmlgJ5.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |