UPSTREAM: drm/i915/intel_i2c: handle zero-length writes
[cascardo/linux.git] / drivers / gpu / drm / i915 / intel_i2c.c
index c12db72..99a04f8 100644 (file)
@@ -248,9 +248,10 @@ gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg,
        u32 val, loop;
 
        val = loop = 0;
-       do {
-               val |= *buf++ << (8 * loop);
-       } while (--len && ++loop < 4);
+       while (len && loop < 4) {
+               val |= *buf++ << (8 * loop++);
+               len -= 1;
+       }
 
        I915_WRITE(GMBUS3 + reg_offset, val);
        I915_WRITE(GMBUS1 + reg_offset,