diff --git a/sys/dev/fb/splash.c b/sys/dev/fb/splash.c index ec25d1cf03a4..ac005887efdb 100644 --- a/sys/dev/fb/splash.c +++ b/sys/dev/fb/splash.c @@ -59,26 +59,28 @@ static void *splash_arg; static int splash_find_data(splash_decoder_t *decoder) { - caddr_t image_module; - caddr_t p; + caddr_t image_module; + void *ptr; + size_t sz; if (decoder->data_type == NULL) - return 0; + return (0); + image_module = preload_search_by_type(decoder->data_type); if (image_module == NULL) - return ENOENT; - p = preload_search_info(image_module, MODINFO_ADDR); - if (p == NULL) - return ENOENT; - decoder->data = *(void **)p; - p = preload_search_info(image_module, MODINFO_SIZE); - if (p == NULL) - return ENOENT; - decoder->data_size = *(size_t *)p; + return (ENOENT); + + ptr = preload_fetch_addr(image_module); + sz = preload_fetch_size(image_module); + if (ptr == NULL || sz == 0) + return (ENOENT); + if (bootverbose) - printf("splash: image@%p, size:%lu\n", - (void *)decoder->data, (long)decoder->data_size); - return 0; + printf("splash: image@%p, size:%zu\n", ptr, sz); + + decoder->data = ptr; + decoder->data_size = sz; + return (0); } static int