xen/xenbus: avoid large structs and arrays on the stack
authorJuergen Gross <jgross@suse.com>
Wed, 1 Jul 2020 12:16:37 +0000 (14:16 +0200)
committerBoris Ostrovsky <boris.ostrovsky@oracle.com>
Thu, 2 Jul 2020 21:19:34 +0000 (16:19 -0500)
commit3848e4e0a32afb96dc3b84e1358c3b9d103c6a2c
tree5f8d8c2b11ea908ddaee5045be1705c2ae9f3523
parentcaef73cf207074a62701c95c317a97b2f8c1e04e
xen/xenbus: avoid large structs and arrays on the stack

xenbus_map_ring_valloc() and its sub-functions are putting quite large
structs and arrays on the stack. This is problematic at runtime, but
might also result in build failures (e.g. with clang due to the option
-Werror,-Wframe-larger-than=... used).

Fix that by moving most of the data from the stack into a dynamically
allocated struct. Performance is no issue here, as
xenbus_map_ring_valloc() is used only when adding a new PV device to
a backend driver.

While at it move some duplicated code from pv/hvm specific mapping
functions to the single caller.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Link: https://lore.kernel.org/r/20200701121638.19840-2-jgross@suse.com
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
drivers/xen/xenbus/xenbus_client.c