This scnprintf() uses the wrong limit.  It should be "PAGE_SIZE - len"
instead of just PAGE_SIZE.  We're not going to hit the limit in real
life since we are printing at most FBTFT_GAMMA_MAX_VALUES_TOTAL (128)
u32 values, however, it's still worth fixing.

Use sysfs_emit_at() to fix this since this is a sysfs file.

Fixes: c296d5f9957c ("staging: fbtft: core support")
Signed-off-by: Dan Carpenter <[email protected]>
---
 drivers/staging/fbtft/fbtft-sysfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/fbtft/fbtft-sysfs.c 
b/drivers/staging/fbtft/fbtft-sysfs.c
index d05599d80011..343545e83a37 100644
--- a/drivers/staging/fbtft/fbtft-sysfs.c
+++ b/drivers/staging/fbtft/fbtft-sysfs.c
@@ -98,7 +98,7 @@ sprintf_gamma(struct fbtft_par *par, u32 *curves, char *buf)
        mutex_lock(&par->gamma.lock);
        for (i = 0; i < par->gamma.num_curves; i++) {
                for (j = 0; j < par->gamma.num_values; j++)
-                       len += scnprintf(&buf[len], PAGE_SIZE,
+                       len += sysfs_emit_at(buf, len,
                             "%04x ", curves[i * par->gamma.num_values + j]);
                buf[len - 1] = '\n';
        }
-- 
2.53.0

Reply via email to