mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
shm: Disallow shrinking shm pools
Unused shm space will be automatically reclaimed if unused or can be explicitly returned by using fallocate FALLOC_FL_PUNCH_HOLE. https://bugs.freedesktop.org/show_bug.cgi?id=74632
This commit is contained in:
parent
c1aa1291a1
commit
24cdbe3d69
2 changed files with 10 additions and 3 deletions
|
|
@ -246,7 +246,8 @@
|
|||
<description summary="change the size of the pool mapping">
|
||||
This request will cause the server to remap the backing memory
|
||||
for the pool from the file descriptor passed when the pool was
|
||||
created, but using the new size.
|
||||
created, but using the new size. This request can only be
|
||||
used to make the pool bigger.
|
||||
</description>
|
||||
|
||||
<arg name="size" type="int"/>
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ struct wl_shm_pool {
|
|||
struct wl_resource *resource;
|
||||
int refcount;
|
||||
char *data;
|
||||
int size;
|
||||
int32_t size;
|
||||
};
|
||||
|
||||
struct wl_shm_buffer {
|
||||
|
|
@ -195,8 +195,14 @@ shm_pool_resize(struct wl_client *client, struct wl_resource *resource,
|
|||
struct wl_shm_pool *pool = wl_resource_get_user_data(resource);
|
||||
void *data;
|
||||
|
||||
data = mremap(pool->data, pool->size, size, MREMAP_MAYMOVE);
|
||||
if (size < pool->size) {
|
||||
wl_resource_post_error(resource,
|
||||
WL_SHM_ERROR_INVALID_FD,
|
||||
"shrinking pool invalid");
|
||||
return;
|
||||
}
|
||||
|
||||
data = mremap(pool->data, pool->size, size, MREMAP_MAYMOVE);
|
||||
if (data == MAP_FAILED) {
|
||||
wl_resource_post_error(resource,
|
||||
WL_SHM_ERROR_INVALID_FD,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue