diff options
author | Thierry Escande <thierry.escande@collabora.com> | 2016-06-16 14:24:41 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2016-07-06 04:03:08 -0400 |
commit | b77693447db987e77a39afaa8774e8702cb110d5 (patch) | |
tree | c16ef17f147b8a7b45cd98686f9ce5b8e4237d69 /net/nfc | |
parent | 8f49bec6c36c73f0c212e07229b19fb4bba85788 (diff) |
NFC: digital: Fix a memory leak in NFC-F listening mode
When configured as a target listening for a SENSF_REQ poll command, a
nfcid2 array was allocated for no reason leading to a memory leak. The
nfcid2 is sent by the target in the SENSF_RES reply.
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc')
-rw-r--r-- | net/nfc/digital_technology.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/net/nfc/digital_technology.c b/net/nfc/digital_technology.c index fb58ed2dd41d..d9080dec5d27 100644 --- a/net/nfc/digital_technology.c +++ b/net/nfc/digital_technology.c | |||
@@ -1257,21 +1257,12 @@ static int digital_tg_config_nfcf(struct nfc_digital_dev *ddev, u8 rf_tech) | |||
1257 | int digital_tg_listen_nfcf(struct nfc_digital_dev *ddev, u8 rf_tech) | 1257 | int digital_tg_listen_nfcf(struct nfc_digital_dev *ddev, u8 rf_tech) |
1258 | { | 1258 | { |
1259 | int rc; | 1259 | int rc; |
1260 | u8 *nfcid2; | ||
1261 | 1260 | ||
1262 | rc = digital_tg_config_nfcf(ddev, rf_tech); | 1261 | rc = digital_tg_config_nfcf(ddev, rf_tech); |
1263 | if (rc) | 1262 | if (rc) |
1264 | return rc; | 1263 | return rc; |
1265 | 1264 | ||
1266 | nfcid2 = kzalloc(NFC_NFCID2_MAXSIZE, GFP_KERNEL); | 1265 | return digital_tg_listen(ddev, 300, digital_tg_recv_sensf_req, NULL); |
1267 | if (!nfcid2) | ||
1268 | return -ENOMEM; | ||
1269 | |||
1270 | nfcid2[0] = DIGITAL_SENSF_NFCID2_NFC_DEP_B1; | ||
1271 | nfcid2[1] = DIGITAL_SENSF_NFCID2_NFC_DEP_B2; | ||
1272 | get_random_bytes(nfcid2 + 2, NFC_NFCID2_MAXSIZE - 2); | ||
1273 | |||
1274 | return digital_tg_listen(ddev, 300, digital_tg_recv_sensf_req, nfcid2); | ||
1275 | } | 1266 | } |
1276 | 1267 | ||
1277 | void digital_tg_recv_md_req(struct nfc_digital_dev *ddev, void *arg, | 1268 | void digital_tg_recv_md_req(struct nfc_digital_dev *ddev, void *arg, |