Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a44542ca authored by Serban Constantinescu's avatar Serban Constantinescu Committed by David Butcher
Browse files

ServiceManager: Add extra error handling



This patch extends the error handling. It also adds a check for a matching
binder version - kernel/userspace.

Change-Id: I43a262934b38c5711536aaa42754fed1ef04b39e
Signed-off-by: default avatarSerban Constantinescu <serban.constantinescu@arm.com>
parent dc832dc5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -62,6 +62,10 @@ int main(int argc, char **argv)
    void *svcmgr = BINDER_SERVICE_MANAGER;

    bs = binder_open(128*1024);
    if (!bs) {
        fprintf(stderr, "failed to open binder driver\n");
        return -1;
    }

    argc--;
    argv++;
+7 −2
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ struct binder_state
struct binder_state *binder_open(unsigned mapsize)
{
    struct binder_state *bs;
    struct binder_version vers;

    bs = malloc(sizeof(*bs));
    if (!bs) {
@@ -108,6 +109,12 @@ struct binder_state *binder_open(unsigned mapsize)
        goto fail_open;
    }

    if ((ioctl(bs->fd, BINDER_VERSION, &vers) == -1) ||
        (vers.protocol_version != BINDER_CURRENT_PROTOCOL_VERSION)) {
        fprintf(stderr, "binder: driver version differs from user space\n");
        goto fail_open;
    }

    bs->mapsize = mapsize;
    bs->mapped = mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, bs->fd, 0);
    if (bs->mapped == MAP_FAILED) {
@@ -116,8 +123,6 @@ struct binder_state *binder_open(unsigned mapsize)
        goto fail_map;
    }

        /* TODO: check version */

    return bs;

fail_map:
+4 −0
Original line number Diff line number Diff line
@@ -275,6 +275,10 @@ int main(int argc, char **argv)
    void *svcmgr = BINDER_SERVICE_MANAGER;

    bs = binder_open(128*1024);
    if (!bs) {
        ALOGE("failed to open binder driver\n");
        return -1;
    }

    if (binder_become_context_manager(bs)) {
        ALOGE("cannot become context manager (%s)\n", strerror(errno));