tty: ipwireless: Replace GFP_ATOMIC with GFP_KERNEL in ipwireless_network_create
ipwireless_network_create() is never called in atomic context. The call chain ending up at ipwireless_network_create() is: [1] ipwireless_network_create() <- config_ipwireless() <- ipwireless_attach() ipwireless_attach() is only set as ".probe" in struct pcmcia_driver. Despite never getting called from atomic context, ipwireless_network_create() calls kzalloc() with GFP_ATOMIC, which does not sleep for allocation. GFP_ATOMIC is not necessary and can be replaced with GFP_KERNEL, which can sleep and improve the possibility of sucessful allocation. This is found by a static analysis tool named DCNS written by myself. And I also manually check it. Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
5909c0bf9c
Коммит
13eac05b05
|
@ -416,7 +416,7 @@ void ipwireless_network_packet_received(struct ipw_network *network,
|
|||
struct ipw_network *ipwireless_network_create(struct ipw_hardware *hw)
|
||||
{
|
||||
struct ipw_network *network =
|
||||
kzalloc(sizeof(struct ipw_network), GFP_ATOMIC);
|
||||
kzalloc(sizeof(struct ipw_network), GFP_KERNEL);
|
||||
|
||||
if (!network)
|
||||
return NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче