<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/20750">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libpayload: Clean up unaligned memset() support<br><br>Use a `for` instead of a `while` loop and use meaningful identifiers.<br>Also, don't use more than one variable for one and the same purpose,<br>don't use more (non-const) variables than necessary, don't alter more<br>than one variable per statement, don't compare pointers of different<br>types and don't do pointer arithmetic on `void *`.<br><br>This was meant as a fix up to a regression but that has already been<br>fixed.<br><br>Change-Id: I0c8fd118d127a26cfcf68bfb0bf681495821e80a<br>Signed-off-by: Nico Huber <nico.huber@secunet.com><br>---<br>M payloads/libpayload/libc/memory.c<br>1 file changed, 10 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/50/20750/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/payloads/libpayload/libc/memory.c b/payloads/libpayload/libc/memory.c<br>index 8d0172c..25c2b3a 100644<br>--- a/payloads/libpayload/libc/memory.c<br>+++ b/payloads/libpayload/libc/memory.c<br>@@ -33,31 +33,29 @@<br> <br> #include <libpayload.h><br> <br>-static void *default_memset(void *s, int c, size_t n)<br>+static void *default_memset(void *const s, const int c, size_t n)<br> {<br>    size_t i;<br>-    void *ret = s;<br>+       u8 *dst = s;<br>  unsigned long w = c & 0xff;<br>-      u8 *p = s;<br> <br>-        s = (void *)ALIGN_UP((uintptr_t)s, sizeof(unsigned long));<br>-   while (p != (u8 *)s && n) {<br>-          *p++ = c;<br>-            n--;<br>- }<br>+    const u8 *const aligned_start =<br>+              (const u8 *)ALIGN_UP((uintptr_t)dst, sizeof(unsigned long));<br>+ for (; n > 0 && dst != aligned_start; --n, ++dst)<br>+         *dst = (u8)c;<br> <br>      for (i = 1; i < sizeof(unsigned long); i <<= 1)<br>              w = (w << (i * 8)) | w;<br> <br>      for (i = 0; i < n / sizeof(unsigned long); i++)<br>-           ((unsigned long *)s)[i] = w;<br>+         ((unsigned long *)dst)[i] = w;<br> <br>-    s += i * sizeof(unsigned long);<br>+      dst += i * sizeof(unsigned long);<br> <br>  for (i = 0; i < n % sizeof(unsigned long); i++)<br>-           ((u8 *)s)[i] = (u8)c;<br>+                dst[i] = (u8)c;<br> <br>-   return ret;<br>+  return s;<br> }<br> <br> void *memset(void *s, int c, size_t n)<br></pre><p>To view, visit <a href="https://review.coreboot.org/20750">change 20750</a>. To unsubscribe, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/20750"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I0c8fd118d127a26cfcf68bfb0bf681495821e80a </div>
<div style="display:none"> Gerrit-Change-Number: 20750 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>