right, thanks.

On 2017/2/3 23:33, Matthew Wilcox wrote:
On Fri, Feb 03, 2017 at 04:42:27PM +0800, [email protected] wrote:
+static inline void zram_fill_page_partial(char *ptr, unsigned int size,
+               unsigned long value)
+{
+       int i;
+       unsigned long *page;
+
+       if (likely(value == 0)) {
+               memset(ptr, 0, size);
+               return;
+       }
+
+       i = ((unsigned long)ptr) % sizeof(*page);
+       if (i) {
+               while (i < sizeof(*page)) {
+                       *ptr++ = (value >> (i * 8)) & 0xff;
+                       --size;
+                       ++i;
+               }
+       }
+
+       for (i = size / sizeof(*page); i > 0; --i) {
+               page = (unsigned long *)ptr;
+               *page = value;
+               ptr += sizeof(*page);
+               size -= sizeof(*page);
+       }
+
+       for (i = 0; i < size; ++i)
+               *ptr++ = (value >> (i * 8)) & 0xff;
+}

You're assuming little-endian here.  I think you need to do a
cpu_to_le() here, but I don't think we have a cpu_to_leul, only
cpu_to_le64/cpu_to_le32.  So you may have some work to do ...


.


Reply via email to