platform/x86: wmi-bmof: Simplify read_bmof()
authorArmin Wolf <W_Armin@gmx.de>
Sun, 30 Jul 2023 20:45:49 +0000 (22:45 +0200)
committerHans de Goede <hdegoede@redhat.com>
Mon, 31 Jul 2023 14:07:41 +0000 (16:07 +0200)
Replace offset handling code with a single call
to memory_read_from_buffer() to simplify read_bmof().

Tested on a ASUS PRIME B650-PLUS.

Reviewed-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Thomas Weißschuh <linux@weissschuh.net>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20230730204550.3402-2-W_Armin@gmx.de
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/wmi-bmof.c

index d0516ca..644d2fd 100644 (file)
@@ -25,25 +25,13 @@ struct bmof_priv {
        struct bin_attribute bmof_bin_attr;
 };
 
-static ssize_t
-read_bmof(struct file *filp, struct kobject *kobj,
-        struct bin_attribute *attr,
-        char *buf, loff_t off, size_t count)
+static ssize_t read_bmof(struct file *filp, struct kobject *kobj, struct bin_attribute *attr,
+                        char *buf, loff_t off, size_t count)
 {
-       struct bmof_priv *priv =
-               container_of(attr, struct bmof_priv, bmof_bin_attr);
+       struct bmof_priv *priv = container_of(attr, struct bmof_priv, bmof_bin_attr);
 
-       if (off < 0)
-               return -EINVAL;
-
-       if (off >= priv->bmofdata->buffer.length)
-               return 0;
-
-       if (count > priv->bmofdata->buffer.length - off)
-               count = priv->bmofdata->buffer.length - off;
-
-       memcpy(buf, priv->bmofdata->buffer.pointer + off, count);
-       return count;
+       return memory_read_from_buffer(buf, count, &off, priv->bmofdata->buffer.pointer,
+                                      priv->bmofdata->buffer.length);
 }
 
 static int wmi_bmof_probe(struct wmi_device *wdev, const void *context)