* commit 'ce3db01cc8a27e6ee642e9e2c4548b5a03dfde2a': Fix cache deletion for secondary users
This commit is contained in:
@@ -271,11 +271,11 @@ int clone_persona_data(uid_t src_persona, uid_t target_persona, int copy)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int delete_cache(const char *pkgname)
|
||||
int delete_cache(const char *pkgname, uid_t persona)
|
||||
{
|
||||
char cachedir[PKG_PATH_MAX];
|
||||
|
||||
if (create_pkg_path(cachedir, pkgname, CACHE_DIR_POSTFIX, 0))
|
||||
if (create_pkg_path(cachedir, pkgname, CACHE_DIR_POSTFIX, persona))
|
||||
return -1;
|
||||
|
||||
/* delete contents, not the directory, no exceptions */
|
||||
|
||||
@@ -72,7 +72,7 @@ static int do_free_cache(char **arg, char reply[REPLY_MAX]) /* TODO int:free_siz
|
||||
|
||||
static int do_rm_cache(char **arg, char reply[REPLY_MAX])
|
||||
{
|
||||
return delete_cache(arg[0]); /* pkgname */
|
||||
return delete_cache(arg[0], atoi(arg[1])); /* pkgname, userid */
|
||||
}
|
||||
|
||||
static int do_get_size(char **arg, char reply[REPLY_MAX])
|
||||
@@ -142,7 +142,7 @@ struct cmdinfo cmds[] = {
|
||||
{ "rename", 2, do_rename },
|
||||
{ "fixuid", 3, do_fixuid },
|
||||
{ "freecache", 1, do_free_cache },
|
||||
{ "rmcache", 1, do_rm_cache },
|
||||
{ "rmcache", 2, do_rm_cache },
|
||||
{ "getsize", 5, do_get_size },
|
||||
{ "rmuserdata", 2, do_rm_user_data },
|
||||
{ "movefiles", 0, do_movefiles },
|
||||
|
||||
@@ -199,7 +199,7 @@ int delete_user_data(const char *pkgname, uid_t persona);
|
||||
int make_user_data(const char *pkgname, uid_t uid, uid_t persona);
|
||||
int delete_persona(uid_t persona);
|
||||
int clone_persona_data(uid_t src_persona, uid_t target_persona, int copy);
|
||||
int delete_cache(const char *pkgname);
|
||||
int delete_cache(const char *pkgname, uid_t persona);
|
||||
int move_dex(const char *src, const char *dst);
|
||||
int rm_dex(const char *path);
|
||||
int protect(char *pkgname, gid_t gid);
|
||||
|
||||
@@ -254,10 +254,12 @@ public final class Installer {
|
||||
return execute(builder.toString());
|
||||
}
|
||||
|
||||
public int deleteCacheFiles(String name) {
|
||||
public int deleteCacheFiles(String name, int userId) {
|
||||
StringBuilder builder = new StringBuilder("rmcache");
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
return execute(builder.toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -8540,11 +8540,10 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
Slog.w(TAG, "Package " + packageName + " has no applicationInfo.");
|
||||
return false;
|
||||
}
|
||||
// TODO: Pass userId to deleteCacheFiles
|
||||
int retCode = mInstaller.deleteCacheFiles(packageName);
|
||||
int retCode = mInstaller.deleteCacheFiles(packageName, userId);
|
||||
if (retCode < 0) {
|
||||
Slog.w(TAG, "Couldn't remove cache files for package: "
|
||||
+ packageName);
|
||||
+ packageName + " u" + userId);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user