History log of /frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
885b742bb66660947d8335e9a4f5a4eef2e45ff9 20-Jan-2016 doheon1.lee <doheon1.lee@lge.com> Changes of root storage space unmounting time on Zygote Process

Zygote process forks every child process for launch the SystemServer and other
applications. When child process is forked, unmount storage inherited
from Zygote process is executed before it gains its own root storage
space.
If Zygote have no storage spaces, unmount operations not needed to
get relevant permission storage space.
Thus unmount is executed only once shortly before the SystemServer is forked.
And the child processes do not unmount its inherited root storage space.

Change-Id: I311ca7ea2c93085f42579f8cf8bdc7ef1d570a04
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
0f6ae2ec0df270c4ce51c87896fe01fe6e1fedfa 22-Feb-2016 Erik Kline <ek@google.com> resolve merge conflicts of b242549166 to nyc-dev

Change-Id: I42d4cac95a209fdfae5769d75d90f004a94d60a4
b2425491662b4d31fbcf09ab36bd10adc42a2b28 18-Feb-2016 Erik Kline <ek@google.com> Give bluetooth sufficient capabilities to run DhcpClient

Specifically:
CAP_NET_RAW
CAP_NET_BIND_SERVICE

Bug: 26991160
Change-Id: I2afddc9efa3b613d974afb0ea33703948203d99a
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
2956beeec97df6ee7fe0c826ccc8c6f625f36d75 28-Jan-2016 Pavlin Radoslavov <pavlin@google.com> Grant CAP_WAKE_ALARM to the Bluetooth process for any user

Use multiuser_get_app_id(uid) to check for AID_BLUETOOTH
and allow the CAP_WAKE_ALARM capability for any user.

Bug: 26784675
Change-Id: I11641e212b7c815e9137ae5620da6ad55f95a899
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
fbd5904ce690491b813ebf815a7e33083bc59ea0 24-Nov-2015 Pavlin Radoslavov <pavlin@google.com> Use GID "wakelock" to control access to kernel wakelock

* Added GID "wakelock" (3010) to the list of groups the System Server
belongs to.

* Added GID "wakelock" to the list of assigned groups for the
"android.permission.BLUETOOTH_STACK" Android permission.

* Grant CAP_BLOCK_SUSPEND to processes that belong to GID "wakelock"

Bug: 25864142
Change-Id: I8a9a5f11e4a9ecd1abf2d4f4b90ec89b3101332e
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
a87723515627401f142aec1fd98b8863b726a1a3 11-Dec-2015 Nicolas Geoffray <ngeoffray@google.com> Special case system_server to not create the JIT code cache.

(cherry picked from commit 3c43b3863328e339dff90b216aed15194d129e4a)

Change-Id: Ic7b0887f9edcb950fad98ccbe66cab6949fbdc52
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
b053cce7ae343feeb6c0908920692904f3b0b94c 18-Nov-2015 Andreas Gampe <agampe@google.com> Frameworks/base: Make RuntimeAbort more expressive

Pass a message to FatalError, which will be more prominent in
aborts than "RuntimeAbort."

Change-Id: Icb3b8f50ca0cc15fd1346c530cd8e6452e951879
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
ea1831d211ea0e6b2d161c714bb0786369ef2df5 24-Sep-2015 Elliott Hughes <enh@google.com> am b57dd722: resolved conflicts for a884d81e to stage-aosp-master

* commit 'b57dd722f1dc0663417da37d3a82f8283ad3c982':
constify JNINativeMethod function pointer tables
b57dd722f1dc0663417da37d3a82f8283ad3c982 24-Sep-2015 Elliott Hughes <enh@google.com> resolved conflicts for a884d81e to stage-aosp-master

Change-Id: Ice485967fa96f13786024b6939b826638e906ff0
76f6a86de25e1bf74717e047e55fd44b089673f3 19-Sep-2015 Daniel Micay <danielmicay@gmail.com> constify JNINativeMethod function pointer tables

Change-Id: I4036c924958221cbc644724f8eb01c5de3cd7954
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
db8a6ee56b8e40d0a743e929739fb19a8b3ec456 04-Sep-2015 Sharvil Nanavati <sharvil@google.com> am 80770c09: am 16db4101: Merge "DO NOT MERGE Add \'bluetooth\' user to the \'system\' group." into cw-e-dev

* commit '80770c099144b65e9c7768bbdb56608eebf03b01':
DO NOT MERGE Add 'bluetooth' user to the 'system' group.
16db4101829c7beee42a09fcaf87fa4e31bc1d5a 03-Sep-2015 Sharvil Nanavati <sharvil@google.com> Merge "DO NOT MERGE Add 'bluetooth' user to the 'system' group." into cw-e-dev
babe81546ef001ae26a5c4b572f1480ba737ae32 01-Sep-2015 Sharvil Nanavati <sharvil@google.com> DO NOT MERGE Add 'bluetooth' user to the 'system' group.

Also grant the Bluetooth process CAP_BLOCK_SUSPEND so it can acquire
wake locks directly from /sys/power/wake_lock.

Bug: 23375670
Change-Id: Ib094c5752d49488c2560897ff6bb821daf98a281
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
7dd51792e2131891d402b4f86c78afa86b6d5758 01-Sep-2015 Christopher Ferris <cferris@google.com> am d6597cb4: am 1bc7d0c8: am 70c958c4: Merge "Save/restore errno in SIGCHLD handler." into mnc-dr-dev

* commit 'd6597cb43c1985ec955f2f5c5daf7be52a9f12a2':
Save/restore errno in SIGCHLD handler.
a8a795428acf5cbe1cd348aa766243203ca78b80 01-Sep-2015 Christopher Ferris <cferris@google.com> Save/restore errno in SIGCHLD handler.

The SIGCHLD handler can set the errno, which can change the errno found
on the thread on which the signal handler is invoked. Most of the time
this is harmless, but it's possible that if the main thread was making
a system call, and allows certain failures based on errno, that logic
can fail. The fix is to save/restore errno in the handler.

Bug: 23572286
Bug: 23689391
Change-Id: I4542fd60cc1398ce0a8902d8df98a3d089fb6efe
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
1262059c072375cd5bd48e86b7ee69d66848494d 20-Aug-2015 Elliott Hughes <enh@google.com> am 260cb53f: am ce4fbb4d: Merge "zygote: fix memory leak when fork process"

* commit '260cb53fdb751dd6997b6b6f60a358257c4df82a':
zygote: fix memory leak when fork process
31b1b2766d80a9a1979488e57a49d1015cfb5538 20-Aug-2015 Elliott Hughes <enh@google.com> am 260cb53f: am ce4fbb4d: Merge "zygote: fix memory leak when fork process"

* commit '260cb53fdb751dd6997b6b6f60a358257c4df82a':
zygote: fix memory leak when fork process
1ca062f21e466b5e8b5defe12033c65b2b4276cb 31-Jul-2015 Mykola Kondratenko <mykola.kondratenko@sonymobile.com> zygote: fix memory leak when fork process

Release memory allocated by GetIntArrayElements.

Change-Id: If7ce2a78a480e58b0376352ce438dbe51f664f3a
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
7d28ad9b638a8184ab499cbe708d3427025e569b 06-Aug-2015 Jeff Sharkey <jsharkey@google.com> am cb54ffb2: Merge "Protect runtime storage mount points." into mnc-dev

* commit 'cb54ffb2cb9583eaf6b58dcc636681c4e4e07a7d':
Protect runtime storage mount points.
928e1ecfe2ca8deb7421f06c80bb4ae02d27f030 06-Aug-2015 Jeff Sharkey <jsharkey@android.com> Protect runtime storage mount points.

We have a bunch of magic that mounts the correct view of storage
access based on the runtime permissions of an app, but we forgot to
protect the real underlying data sources; oops.

This series of changes just bumps the directory heirarchy one level
to give us /mnt/runtime which we can mask off as 0700 to prevent
people from jumping to the exposed internals.

Also add CTS tests to verify that we're protecting access to
internal mount points like this.

Bug: 22964288
Change-Id: I74dbdcb01d4fabe92166b8043a74c6a1e93c6d5f
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
6d43a861d01ef48f37c69f96346a13d23164a585 05-Aug-2015 Tim Murray <timmurray@google.com> Add boost to increase the load on newly-forked zygote processes.

Makes it more likely for app launches to end up on a large core in
an HMP environment.

bug 21915482

Change-Id: Ieac192a4bc1237dd03b9492fcad3a78de5510a58
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
faf3f692174be30ef9226981e640bc9a09c4da97 01-Jul-2015 Jeff Sharkey <jsharkey@android.com> Fully unmount existing storage in Zygote.

Before mounting the requested storage into place, fully unmount all
existing mounts inherited from the root namespace.

Bug: 22192518
Change-Id: I6f7f12c1219d25ee487a031d37c60fb4051d24ad
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
9527b223a9d4a4d149bb005afc77148dbeeff785 25-Jun-2015 Jeff Sharkey <jsharkey@android.com> Let's reinvent storage, yet again!

Now that we're treating storage as a runtime permission, we need to
grant read/write access without killing the app. This is really
tricky, since we had been using GIDs for access control, and they're
set in stone once Zygote drops privileges.

The only thing left that can change dynamically is the filesystem
itself, so let's do that. This means changing the FUSE daemon to
present itself as three different views:

/mnt/runtime_default/foo - view for apps with no access
/mnt/runtime_read/foo - view for apps with read access
/mnt/runtime_write/foo - view for apps with write access

There is still a single location for all the backing files, and
filesystem permissions are derived the same way for each view, but
the file modes are masked off differently for each mountpoint.

During Zygote fork, it wires up the appropriate storage access into
an isolated mount namespace based on the current app permissions. When
the app is granted permissions dynamically at runtime, the system
asks vold to jump into the existing mount namespace and bind mount
the newly granted access model into place.

Bug: 21858077
Change-Id: I62fb25d126dd815aea699b33d580e3afb90f8fd2
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
4887789e44cdb16b042a35e8ec03983213e88ac6 18-Mar-2015 Jeff Sharkey <jsharkey@android.com> Progress towards dynamic storage support.

Storage devices are no longer hard-coded, and instead bubble up from
whatever Disk and VolumeBase that vold uncovered, turning into
sibling Java objects in MountService. We now treat vold events as
the source-of-truth for state, and synchronize our state by asking
vold to "reset" whenever we reconnect.

We've now moved to a model where all storage devices are mounted in
the root mount namespace (user boundaries protected with GIDs), so
we no longer need app-to-vold path translation. This also means that
zygote only needs to bind mount the user-specific /mnt/user/n/ path
onto /storage/self/ to make legacy paths like /sdcard work. This
grealy simplifies a lot of system code.

Many parts of the platform depend on a primary storage device always
being present, so we hack together a stub StorageVolume when vold
doesn't have a volume ready yet.

StorageVolume isn't really a volume anymore; it's the user-specific
view onto a volume, so MountService now filters and builds them
based on the calling user. StorageVolume is now immutable, making
it easier to reason about.

Environment now builds all of its paths dynamically based on active
volumes. Adds utility methods to turn int types and flags into
user-readable strings for debugging purposes.

Remove UMS sharing support for now, since no current devices support
it; MTP is the recommended solution going forward because it offers
better multi-user support.

Simplify unmount logic, since vold will now gladly trigger EJECTING
broadcast and kill stubborn processes.

Bug: 19993667
Change-Id: I9842280e61974c91bae15d764e386969aedcd338
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
ed6b9dff563c5e22f040ff37e12c0d771e0478ae 21-Nov-2014 Andreas Gampe <agampe@google.com> Frameworks/base: Consistency in core/jni

Make consistent use of core_jni_helpers for registration.

Translate some #ifdefs into const bools.

Change-Id: I37639aa053dd50f003a552cbd8550dddecc811c5
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
46d8444631b4b1253a76bfcc78a29d26014d022f 19-Nov-2014 Dan Albert <danalbert@google.com> Fix clang warnings in core/jni.

There are a few bugs in here too (mostly people expecting + to
concatenate C strings) :(

Change-Id: I0a243c05c4ea8b56e84896f37814d0fbea4c39d5
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
5d5e4b14f67903370a7805492eb92fbe3b487a14 29-Oct-2014 Calin Juravle <calin@google.com> am 43a92646: Merge "Use native brige only if we have a private data directory."

* commit '43a9264619e08f464dd4f184e53441a440cca09f':
Use native brige only if we have a private data directory.
6a4d2369e5493cea86817634eceb0be46ba7d7a6 28-Oct-2014 Calin Juravle <calin@google.com> Use native brige only if we have a private data directory.

Bug: 18027433

Change-Id: I59b1b1cbe1d7d14b93d8bb6d4255c951d9e469b6
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
5d4deb8246b13531a6b2b7611c650ba504e44dc6 28-Oct-2014 Calin Juravle <calin@google.com> am f7d24d24: Merge "PreInitializeNativeBridge only if its Available"

* commit 'f7d24d244319599f62c22e29c3e6540d6cbadf49':
PreInitializeNativeBridge only if its Available
79ec4c15ab941419d21700a9734f5238b975c31a 24-Oct-2014 Calin Juravle <calin@google.com> PreInitializeNativeBridge only if its Available

Also, assert that we always have a private application directory for non
system_server case.

Change-Id: I8397d7f7b04cde0bf65b60ca415bf3f4b349783c
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
921d8e2ddb04080827fa92239bb858631e3cabe3 01-Oct-2014 Elliott Hughes <enh@google.com> am ee7684ca: am 04517286: Merge "Use strerror(3) when reporting zygote failures."

* commit 'ee7684cad00a13fc82519599ad8fab3cfbd6fe8b':
Use strerror(3) when reporting zygote failures.
960e83185efc709470f3c4c85f69e82269d2927a 30-Sep-2014 Elliott Hughes <enh@google.com> Use strerror(3) when reporting zygote failures.

Bug: 17700596
Change-Id: I39a72ab6f19063de3c90c9fccdb749dc9a86324e
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
a103ebed6e9a44a406b31636791d2970c882ec44 25-Sep-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of dfdabe37 to lmp-dev-plus-aosp

Change-Id: Ia9c350dcfb41f9d04400a86bd7e5f2cf2af656f1
2eacd06bfb82b33dfcbccafbcfc0bf1218484bb5 10-Sep-2014 jgu21 <jinghui.gu@intel.com> Frameworks/base: Early init native bridge

Add the app directory to the arguments for starting a process.
Add a check for NeedsNativeBridge and a call to PreInitializeBridge
in the native fork code.

Change-Id: I0b93da93251c6b4638de786bf98cf99df07c3fc2
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
dc84c6ca86290393fec2bb730f125575ee9e168e 05-Sep-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of 82ad9ec3 to lmp-dev-plus-aosp

Change-Id: I7ae05c4f1b072906932a9ed47bdbad881b8e0d37
aec67dcc02362e4d2f7641c6605405b839bd1bd4 03-Sep-2014 Andreas Gampe <agampe@google.com> Frameworks/base: Add native bridge post-fork initialization

Change-Id: I5a20de1cb68dd1802937b369b14c50c9c1031c67
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
4990e4f0e3d493036e99e1f5fb893635a9b66eb1 30-Jun-2014 Sharvil Nanavati <sharvil@google.com> Launch processes running under the 'bluetooth' uid with CAP_WAKE_ALARM.

This is required since bluedroid needs to set wake alarms and timers.
Going through JNI back into Java code and then across Binder to
AlarmManager is both inefficient and doesn't provide the resolution
required for functions like A2DP.

Change-Id: I619be0b18a9e7ac2567b7c68ba84fcd15eecf715
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
3089bed197a4fbfcc3fb741aa0ed6b3e162e392c 15-Jul-2014 Colin Cross <ccross@android.com> Zygote: make libprocessgroup failures non-fatal

createProcessGroup can fail if the kernel does not support the
cpuacct cgroup. Print a more useful error message, and don't
runtime abort.

Bug: 16243791
Change-Id: Ibbf081bda58a99c83b8070f55d151905c706b378
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
0161bbc6e54744d5e0348af3d123858818f966e9 03-Jun-2014 Colin Cross <ccross@android.com> ActivityManager: use Process.killProcessGroup to kill forked processes

Place newly-created processes in a process group, and use
killProcessGroup to kill any forked processes.

Bug: 15313911
Change-Id: I0f3e2eeebd9a910dae3f6b2801826c92aea03030
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
18cd9f57621b47889bdf81b2b04413569a999ef4 13-Jun-2014 Colin Cross <ccross@android.com> clean up native com.android.internal.os.Zygote

This is never compiled for the host any more, so remove all the
unnecesarry ifdefs.

Change-Id: I757e6d604b7f41476ac1021f5bdbc777eac6f99e
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
160992da04cab56a92cd425adc249c52b040f93d 14-Apr-2014 Narayan Kamath <narayan@google.com> Fix broken logging in Zygote.cpp.

- Differentiate between clean exits and signals.
- Change the logic for the waitpid warning. We should log it
only if the *first* call to waitpid returned ECHILD.

Change-Id: I6bc50e4ffd100fb7f3f526d6b4056bed10b8045f
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
973b4663b0b5ee62006522bf4742af076096e548 31-Mar-2014 Narayan Kamath <narayan@google.com> Move zygote startup logic to the frameworks.

The Zygote class is now in com.android.internal.os. It is
responsible for the vast majority of work before and after
the call to fork(). It calls back into the Runtime via
the new dalvik.system.ZygoteHooks class to allow the Runtime
to perform pre fork cleanup and post fork initialization.

The native code in Zygote.cpp is a direct and straightforward
port of the existing code in art. Most differences are
superficial, for example :
- We use C style logging (ALOGE) instead of stream based
logging.
- We call env->FatalError() instead of using LOG(FATAL)

Change-Id: Ia101fb2af12d23894fe57e4134d2bc6d142e5059
/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp