Hi Johan, > The two lowest bits of the minor device class value are reserved and > should be zero, and the three highest bits of the major device class > likewise. The management code should therefore test for this and return > a proper "invalid params" error if the condition is not met. > > Signed-off-by: Johan Hedberg <johan.hedberg@xxxxxxxxx> > --- > net/bluetooth/mgmt.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c > index aaf9ce6..2785de2 100644 > --- a/net/bluetooth/mgmt.c > +++ b/net/bluetooth/mgmt.c > @@ -1430,6 +1430,12 @@ static int set_dev_class(struct sock *sk, struct hci_dev *hdev, void *data, > goto unlock; > } > > + if ((cp->minor & 0x03) != 0 || (cp->major & 0xe0) != 0) { > + err = cmd_status(sk, hdev->id, MGMT_OP_SET_DEV_CLASS, > + MGMT_STATUS_INVALID_PARAMS); > + goto unlock; > + } we could do if ((cp->minor & 0x03) || ...) { However I am not sure what is preferred and I am fine both ways. > + > hdev->major_class = cp->major; > hdev->minor_class = cp->minor; > Acked-by: Marcel Holtmann <marcel@xxxxxxxxxxxx> Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html