struct mgmt_cp_add_remote_oob_data *cp = data;
                u8 status;
 
+               if (cp->addr.type != BDADDR_BREDR) {
+                       err = cmd_complete(sk, hdev->id,
+                                          MGMT_OP_ADD_REMOTE_OOB_DATA,
+                                          MGMT_STATUS_INVALID_PARAMS,
+                                          &cp->addr, sizeof(cp->addr));
+                       goto unlock;
+               }
+
                err = hci_add_remote_oob_data(hdev, &cp->addr.bdaddr,
                                              cp->hash, cp->randomizer);
                if (err < 0)
                struct mgmt_cp_add_remote_oob_ext_data *cp = data;
                u8 status;
 
+               if (cp->addr.type != BDADDR_BREDR) {
+                       err = cmd_complete(sk, hdev->id,
+                                          MGMT_OP_ADD_REMOTE_OOB_DATA,
+                                          MGMT_STATUS_INVALID_PARAMS,
+                                          &cp->addr, sizeof(cp->addr));
+                       goto unlock;
+               }
+
                err = hci_add_remote_oob_ext_data(hdev, &cp->addr.bdaddr,
                                                  cp->hash192,
                                                  cp->randomizer192,
                                 MGMT_STATUS_INVALID_PARAMS);
        }
 
+unlock:
        hci_dev_unlock(hdev);
        return err;
 }
 
        BT_DBG("%s", hdev->name);
 
+       if (cp->addr.type != BDADDR_BREDR)
+               return cmd_complete(sk, hdev->id, MGMT_OP_REMOVE_REMOTE_OOB_DATA,
+                                   MGMT_STATUS_INVALID_PARAMS,
+                                   &cp->addr, sizeof(cp->addr));
+
        hci_dev_lock(hdev);
 
        if (!bacmp(&cp->addr.bdaddr, BDADDR_ANY)) {