hci_remote_oob_data_clear(hdev);
        hci_bdaddr_list_clear(&hdev->le_white_list);
        hci_conn_params_clear_all(hdev);
+       hci_discovery_filter_clear(hdev);
        hci_dev_unlock(hdev);
 
        hci_dev_put(hdev);
 
                goto failed;
        }
 
+       /* Clear the discovery filter first to free any previously
+        * allocated memory for the UUID list.
+        */
+       hci_discovery_filter_clear(hdev);
+
        hdev->discovery.type = cp->type;
-       hdev->discovery.rssi = HCI_RSSI_INVALID;
-       hdev->discovery.uuid_count = 0;
 
        hci_req_init(&req, hdev);
 
                goto failed;
        }
 
+       /* Clear the discovery filter first to free any previously
+        * allocated memory for the UUID list.
+        */
+       hci_discovery_filter_clear(hdev);
+
        hdev->discovery.type = cp->type;
        hdev->discovery.rssi = cp->rssi;
        hdev->discovery.uuid_count = uuid_count;