Skip to content

Commit

Permalink
init: use tmpfs/ftruncate for properties backing store instead of ashmem
Browse files Browse the repository at this point in the history
This removes the need for ashmem for early bringup and avoids an issue
with permissions enforcement.

Change-Id: I405b080660934d73048c79d614b6b2ebc43ab182
Signed-off-by: Brian Swetland <[email protected]>
  • Loading branch information
swetland committed Jul 13, 2010
1 parent 63e5205 commit 25b15be
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions init/property_service.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

#include <cutils/misc.h>
#include <cutils/sockets.h>
#include <cutils/ashmem.h>

#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
#include <sys/_system_properties.h>
Expand Down Expand Up @@ -110,21 +109,31 @@ static int init_workspace(workspace *w, size_t size)
void *data;
int fd;

fd = ashmem_create_region("system_properties", size);
if(fd < 0)
/* dev is a tmpfs that we can use to carve a shared workspace
* out of, so let's do that...
*/
fd = open("/dev/__properties__", O_RDWR | O_CREAT, 0600);
if (fd < 0)
return -1;

if (ftruncate(fd, size) < 0)
goto out;

data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if(data == MAP_FAILED)
goto out;

/* allow the wolves we share with to do nothing but read */
ashmem_set_prot_region(fd, PROT_READ);
close(fd);

fd = open("/dev/__properties__", O_RDONLY);
if (fd < 0)
return -1;

unlink("/dev/__properties__");

w->data = data;
w->size = size;
w->fd = fd;

return 0;

out:
Expand Down

0 comments on commit 25b15be

Please sign in to comment.