[PATCH] Bluetooth: use assign_bit() where applicable

From: Peng Fan (OSS)

Date: Sat Sep 19 2026 - 22:28:54 EST


From: Peng Fan <peng.fan@xxxxxxx>

Convert open-coded if/else with set_bit/clear_bit the assign_bit API.

Done with Coccinelle semantic patch:
// set_bit -> clear_bit => assign_bit

@@
expression cond, bit, addr;
@@

-if (cond)
- set_bit(bit, addr);
-else
- clear_bit(bit, addr);
+assign_bit(bit, addr, cond);

@@
expression cond, bit, addr;
@@

-if (cond)
- clear_bit(bit, addr);
-else
- set_bit(bit, addr);
+assign_bit(bit, addr, !cond);

Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
net/bluetooth/hci_event.c | 31 +++++++------------------------
net/bluetooth/iso.c | 15 +++------------
net/bluetooth/l2cap_sock.c | 22 ++++++----------------
net/bluetooth/rfcomm/core.c | 6 ++----
net/bluetooth/rfcomm/sock.c | 5 +----
net/bluetooth/sco.c | 10 ++--------
6 files changed, 21 insertions(+), 68 deletions(-)

diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 25ddba2f603b..5ac2357e92c9 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -404,10 +404,7 @@ static u8 hci_cc_write_auth_enable(struct hci_dev *hdev, void *data,
if (!rp->status) {
__u8 param = *((__u8 *) sent);

- if (param == AUTH_ENABLED)
- set_bit(HCI_AUTH, &hdev->flags);
- else
- clear_bit(HCI_AUTH, &hdev->flags);
+ assign_bit(HCI_AUTH, &hdev->flags, param == AUTH_ENABLED);
}

if (hci_dev_test_flag(hdev, HCI_MGMT))
@@ -436,10 +433,7 @@ static u8 hci_cc_write_encrypt_mode(struct hci_dev *hdev, void *data,

param = *((__u8 *) sent);

- if (param)
- set_bit(HCI_ENCRYPT, &hdev->flags);
- else
- clear_bit(HCI_ENCRYPT, &hdev->flags);
+ assign_bit(HCI_ENCRYPT, &hdev->flags, param);

return rp->status;
}
@@ -466,15 +460,9 @@ static u8 hci_cc_write_scan_enable(struct hci_dev *hdev, void *data,
goto done;
}

- if (param & SCAN_INQUIRY)
- set_bit(HCI_ISCAN, &hdev->flags);
- else
- clear_bit(HCI_ISCAN, &hdev->flags);
+ assign_bit(HCI_ISCAN, &hdev->flags, param & SCAN_INQUIRY);

- if (param & SCAN_PAGE)
- set_bit(HCI_PSCAN, &hdev->flags);
- else
- clear_bit(HCI_PSCAN, &hdev->flags);
+ assign_bit(HCI_PSCAN, &hdev->flags, param & SCAN_PAGE);

done:
hci_dev_unlock(hdev);
@@ -4614,10 +4602,8 @@ static void hci_mode_change_evt(struct hci_dev *hdev, void *data,

if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND,
&conn->flags)) {
- if (conn->mode == HCI_CM_ACTIVE)
- set_bit(HCI_CONN_POWER_SAVE, &conn->flags);
- else
- clear_bit(HCI_CONN_POWER_SAVE, &conn->flags);
+ assign_bit(HCI_CONN_POWER_SAVE, &conn->flags,
+ conn->mode == HCI_CM_ACTIVE);
}

if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags))
@@ -4817,10 +4803,7 @@ static void hci_link_key_notify_evt(struct hci_dev *hdev, void *data,
goto unlock;
}

- if (persistent)
- clear_bit(HCI_CONN_FLUSH_KEY, &conn->flags);
- else
- set_bit(HCI_CONN_FLUSH_KEY, &conn->flags);
+ assign_bit(HCI_CONN_FLUSH_KEY, &conn->flags, !persistent);

unlock:
hci_dev_unlock(hdev);
diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c
index eb99653f33f9..cd4e9e3968e6 100644
--- a/net/bluetooth/iso.c
+++ b/net/bluetooth/iso.c
@@ -1935,10 +1935,7 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags, opt);
break;

case BT_PKT_STATUS:
@@ -1946,10 +1943,7 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags, opt);
break;

case BT_PKT_SEQNUM:
@@ -1957,10 +1951,7 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_PKT_SEQNUM, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_PKT_SEQNUM, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_PKT_SEQNUM, &bt_sk(sk)->flags, opt);
break;

case BT_ISO_QOS:
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index ddd47f42db46..e2f90e92af3a 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -867,15 +867,11 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
if (opt & L2CAP_LM_SECURE)
chan->sec_level = BT_SECURITY_HIGH;

- if (opt & L2CAP_LM_MASTER)
- set_bit(FLAG_ROLE_SWITCH, &chan->flags);
- else
- clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
+ assign_bit(FLAG_ROLE_SWITCH, &chan->flags,
+ opt & L2CAP_LM_MASTER);

- if (opt & L2CAP_LM_RELIABLE)
- set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
- else
- clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
+ assign_bit(FLAG_FORCE_RELIABLE, &chan->flags,
+ opt & L2CAP_LM_RELIABLE);
break;

default:
@@ -1042,10 +1038,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
}
}

- if (opt)
- set_bit(FLAG_FLUSHABLE, &chan->flags);
- else
- clear_bit(FLAG_FLUSHABLE, &chan->flags);
+ assign_bit(FLAG_FLUSHABLE, &chan->flags, opt);
break;

case BT_POWER:
@@ -1061,10 +1054,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (pwr.force_active)
- set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
- else
- clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
+ assign_bit(FLAG_FORCE_ACTIVE, &chan->flags, pwr.force_active);
break;

case BT_CHANNEL_POLICY:
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index f7463f092283..54b70d1186ee 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1684,10 +1684,8 @@ static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb
return 0;

if (cr) {
- if (msc->v24_sig & RFCOMM_V24_FC && !d->cfc)
- set_bit(RFCOMM_TX_THROTTLED, &d->flags);
- else
- clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
+ assign_bit(RFCOMM_TX_THROTTLED, &d->flags,
+ msc->v24_sig & RFCOMM_V24_FC && !d->cfc);

rfcomm_dlc_lock(d);

diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index e2486bc11cbc..2167ba6f478b 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -721,10 +721,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags, opt);

break;

diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 3d4362a09df4..e19079b9c432 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -992,10 +992,7 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags, opt);
break;

case BT_VOICE:
@@ -1035,10 +1032,7 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
if (err)
break;

- if (opt)
- set_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
- else
- clear_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
+ assign_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags, opt);
break;

case BT_CODEC:
--
2.51.0