aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2024-01-12 15:09:22 +0000
committerMark Johnston <markj@FreeBSD.org>2024-01-12 20:56:00 +0000
commit848a8bf3f40d91bda0ae3ab67f22ed693f25f9c4 (patch)
tree9aad723c88a33f612fc5182bc9dc2d3dc4f20d6c
parent5df041c4bbf70d549b055f332630925295ad5aaf (diff)
downloadsrc-848a8bf3f40d91bda0ae3ab67f22ed693f25f9c4.tar.gz
src-848a8bf3f40d91bda0ae3ab67f22ed693f25f9c4.zip
fb: Check for errors from copyin()
When compiling with gcc, a function annotated with __result_use_check cannot have its return value ignored with a void cast. So, try to handle it. MFC after: 1 week
-rw-r--r--sys/dev/fb/vesa.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c
index e1cca3a70725..dcd3d34076bf 100644
--- a/sys/dev/fb/vesa.c
+++ b/sys/dev/fb/vesa.c
@@ -1732,11 +1732,15 @@ set_palette(video_adapter_t *adp, int base, int count,
r = malloc(count * 3, M_DEVBUF, M_WAITOK | M_ZERO);
g = r + count;
b = g + count;
- (void)copyin(red, r, count);
- (void)copyin(green, g, count);
- (void)copyin(blue, b, count);
+ if (copyin(red, r, count) != 0 ||
+ copyin(green, g, count) != 0 ||
+ copyin(blue, b, count) != 0) {
+ error = 1;
+ goto out;
+ }
error = vesa_bios_load_palette2(base, count, r, g, b, bits);
+out:
free(r, M_DEVBUF);
return (error);