diff --git a/api/glue/handler.c b/api/glue/handler.c index f54ccca0f4aa976d110b275357e75b8b771ebbe4..1a8e357b7be73f4bfdd0f24c0e55d0ba77b547ec 100644 --- a/api/glue/handler.c +++ b/api/glue/handler.c @@ -39,8 +39,8 @@ eb_status_t eb_socket_attach(eb_socket_t socketp, eb_handler_t handler) { struct eb_socket* socket; struct eb_handler_address* address; struct eb_handler_callback* callback; - uint64_t new_begin, new_end; - uint64_t dev_begin, dev_end; + eb_address_t new_begin, new_end; + eb_address_t dev_begin, dev_end; /* Get memory */ addressp = eb_new_handler_address(); @@ -56,6 +56,10 @@ eb_status_t eb_socket_attach(eb_socket_t socketp, eb_handler_t handler) { new_begin = handler->device->wbd_begin; new_end = handler->device->wbd_end; + /* Is the address range supported by our bus size? */ + if (new_begin != handler->device->wbd_begin || new_end != handler->device->wbd_end) + return EB_ADDRESS; + /* Does it overlap out reserved memory range? */ if (new_begin < 0x4000) return EB_ADDRESS;