Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fix from Herbert Xu: "This fixes a NULL pointer dereference in crypto_remove_spawns that can be triggered through af_alg" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: algapi - fix NULL dereference in crypto_remove_spawns()
This commit is contained in:
commit
70cd9071e8
@ -167,6 +167,18 @@ void crypto_remove_spawns(struct crypto_alg *alg, struct list_head *list,
|
|||||||
|
|
||||||
spawn->alg = NULL;
|
spawn->alg = NULL;
|
||||||
spawns = &inst->alg.cra_users;
|
spawns = &inst->alg.cra_users;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We may encounter an unregistered instance here, since
|
||||||
|
* an instance's spawns are set up prior to the instance
|
||||||
|
* being registered. An unregistered instance will have
|
||||||
|
* NULL ->cra_users.next, since ->cra_users isn't
|
||||||
|
* properly initialized until registration. But an
|
||||||
|
* unregistered instance cannot have any users, so treat
|
||||||
|
* it the same as ->cra_users being empty.
|
||||||
|
*/
|
||||||
|
if (spawns->next == NULL)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} while ((spawns = crypto_more_spawns(alg, &stack, &top,
|
} while ((spawns = crypto_more_spawns(alg, &stack, &top,
|
||||||
&secondary_spawns)));
|
&secondary_spawns)));
|
||||||
|
Loading…
Reference in New Issue
Block a user