From: Ruchi Kandoi Date: Sat, 24 Oct 2015 00:49:11 +0000 (-0700) Subject: uid_cputime: Check for the range while removing range of UIDs. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=fc20e7a1c7266258b1c5fd5d66a4a2156f099fb0;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git uid_cputime: Check for the range while removing range of UIDs. Checking if the uid_entry->uid matches the uid intended to be removed will prevent deleting unwanted uid_entry. Type cast the key for the hashtable to the same size, as when they were inserted. This will make sure that we can find the uid_entry we want. Bug: 25195548 Change-Id: I567942123cfb20e4b61ad624da19ec4cc84642c1 Signed-off: Ruchi kandoi --- diff --git a/drivers/misc/uid_cputime.c b/drivers/misc/uid_cputime.c index a8bd0916f54..0068c2066cc 100644 --- a/drivers/misc/uid_cputime.c +++ b/drivers/misc/uid_cputime.c @@ -170,14 +170,15 @@ static ssize_t uid_remove_write(struct file *file, kstrtol(end_uid, 10, &uid_end) != 0) { return -EINVAL; } - mutex_lock(&uid_lock); for (; uid_start <= uid_end; uid_start++) { hash_for_each_possible_safe(hash_table, uid_entry, tmp, - hash, uid_start) { - hash_del(&uid_entry->hash); - kfree(uid_entry); + hash, (uid_t)uid_start) { + if (uid_start == uid_entry->uid) { + hash_del(&uid_entry->hash); + kfree(uid_entry); + } } }