Browse Source

Bluetooth: Avoid using GFP_ATOMIC where not necessary

The various pieces of data cached in the hci_dev structure do not need
to be allocated using GFP_ATOMIC since they are never added from
interrupt context. This patch updates these allocations to use
GFP_KERNEL instead.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Johan Hedberg 11 years ago
parent
commit
0a14ab416d
1 changed files with 4 additions and 4 deletions
  1. 4 4
      net/bluetooth/hci_core.c

+ 4 - 4
net/bluetooth/hci_core.c

@@ -2721,7 +2721,7 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
 		key = old_key;
 		key = old_key;
 	} else {
 	} else {
 		old_key_type = conn ? conn->key_type : 0xff;
 		old_key_type = conn ? conn->key_type : 0xff;
-		key = kzalloc(sizeof(*key), GFP_ATOMIC);
+		key = kzalloc(sizeof(*key), GFP_KERNEL);
 		if (!key)
 		if (!key)
 			return -ENOMEM;
 			return -ENOMEM;
 		list_add(&key->list, &hdev->link_keys);
 		list_add(&key->list, &hdev->link_keys);
@@ -2773,7 +2773,7 @@ int hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type, u8 type,
 	if (old_key)
 	if (old_key)
 		key = old_key;
 		key = old_key;
 	else {
 	else {
-		key = kzalloc(sizeof(*key), GFP_ATOMIC);
+		key = kzalloc(sizeof(*key), GFP_KERNEL);
 		if (!key)
 		if (!key)
 			return -ENOMEM;
 			return -ENOMEM;
 		list_add(&key->list, &hdev->long_term_keys);
 		list_add(&key->list, &hdev->long_term_keys);
@@ -2938,7 +2938,7 @@ int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
 
 
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 	if (!data) {
 	if (!data) {
-		data = kmalloc(sizeof(*data), GFP_ATOMIC);
+		data = kmalloc(sizeof(*data), GFP_KERNEL);
 		if (!data)
 		if (!data)
 			return -ENOMEM;
 			return -ENOMEM;
 
 
@@ -2965,7 +2965,7 @@ int hci_add_remote_oob_ext_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
 
 
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 	if (!data) {
 	if (!data) {
-		data = kmalloc(sizeof(*data), GFP_ATOMIC);
+		data = kmalloc(sizeof(*data), GFP_KERNEL);
 		if (!data)
 		if (!data)
 			return -ENOMEM;
 			return -ENOMEM;