mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
nvmem: core: Fix cell lookup when no cell is found
If the cell list is not empty and nvmem_find_cell_by_node/name() is called for a cell that is not present in the list they will return an invalid pointer instead of NULL. This happen because list_for_each_entry() stop once it reach the list head again, but as the list head is not contained in a struct nvmem_cell the iteration variable then contains an invalid value. This is easily solved by using a variable to iterate over the list and one to return the cell found. Signed-off-by: Alban Bedel <[email protected]> Signed-off-by: Srinivas Kandagatla <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
5087cc198e
commit
1c83267473
1 changed files with 10 additions and 6 deletions
|
|
@ -525,12 +525,14 @@ out:
|
|||
static struct nvmem_cell *
|
||||
nvmem_find_cell_by_name(struct nvmem_device *nvmem, const char *cell_id)
|
||||
{
|
||||
struct nvmem_cell *cell = NULL;
|
||||
struct nvmem_cell *iter, *cell = NULL;
|
||||
|
||||
mutex_lock(&nvmem_mutex);
|
||||
list_for_each_entry(cell, &nvmem->cells, node) {
|
||||
if (strcmp(cell_id, cell->name) == 0)
|
||||
list_for_each_entry(iter, &nvmem->cells, node) {
|
||||
if (strcmp(cell_id, iter->name) == 0) {
|
||||
cell = iter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&nvmem_mutex);
|
||||
|
||||
|
|
@ -994,12 +996,14 @@ out:
|
|||
static struct nvmem_cell *
|
||||
nvmem_find_cell_by_node(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
struct nvmem_cell *cell = NULL;
|
||||
struct nvmem_cell *iter, *cell = NULL;
|
||||
|
||||
mutex_lock(&nvmem_mutex);
|
||||
list_for_each_entry(cell, &nvmem->cells, node) {
|
||||
if (np == cell->np)
|
||||
list_for_each_entry(iter, &nvmem->cells, node) {
|
||||
if (np == iter->np) {
|
||||
cell = iter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&nvmem_mutex);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue