aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-03-13 22:43:01 -0400
committerDavid S. Miller <davem@davemloft.net>2016-03-13 22:43:01 -0400
commitf4fa6e6d883cd89fa5c240c1896a4dd329d1caa9 (patch)
tree0e406e300f1e71ecc735010dda8d875db98540bf
parent010998815230792aa8923a4b72deef0fd0c5f2e5 (diff)
parent079c2652e5af648db6bf4f54bcafdafcc57a0d2c (diff)
Merge tag 'nfc-next-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/nfc-next
Samuel Ortiz says: ==================== NFC 4.6 pull request This is a very small one this time, with only 5 patches. There are a couple of big items that could not be merged/finished on time. We have: - 2 LLCP fixes for a race and a potential OOM. - 2 cleanups for the pn544 and microread drivers. - 1 Maintainer addition for the s3fwrn5 driver. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--MAINTAINERS2
-rw-r--r--drivers/nfc/microread/i2c.c8
-rw-r--r--drivers/nfc/pn544/i2c.c14
-rw-r--r--include/linux/platform_data/microread.h35
-rw-r--r--net/nfc/llcp_commands.c4
-rw-r--r--net/nfc/llcp_sock.c6
6 files changed, 10 insertions, 59 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 1663ad41803c..b70294ea7d63 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7666,7 +7666,6 @@ F: net/nfc/
7666F: include/net/nfc/ 7666F: include/net/nfc/
7667F: include/uapi/linux/nfc.h 7667F: include/uapi/linux/nfc.h
7668F: drivers/nfc/ 7668F: drivers/nfc/
7669F: include/linux/platform_data/microread.h
7670F: include/linux/platform_data/nfcmrvl.h 7669F: include/linux/platform_data/nfcmrvl.h
7671F: include/linux/platform_data/nxp-nci.h 7670F: include/linux/platform_data/nxp-nci.h
7672F: include/linux/platform_data/pn544.h 7671F: include/linux/platform_data/pn544.h
@@ -9509,6 +9508,7 @@ F: drivers/media/i2c/s5k5baf.c
9509 9508
9510SAMSUNG S3FWRN5 NFC DRIVER 9509SAMSUNG S3FWRN5 NFC DRIVER
9511M: Robert Baldyga <r.baldyga@samsung.com> 9510M: Robert Baldyga <r.baldyga@samsung.com>
9511M: Krzysztof Opasiak <k.opasiak@samsung.com>
9512L: linux-nfc@lists.01.org (moderated for non-subscribers) 9512L: linux-nfc@lists.01.org (moderated for non-subscribers)
9513S: Supported 9513S: Supported
9514F: drivers/nfc/s3fwrn5 9514F: drivers/nfc/s3fwrn5
diff --git a/drivers/nfc/microread/i2c.c b/drivers/nfc/microread/i2c.c
index 918e8f2eac47..e0e8afd27849 100644
--- a/drivers/nfc/microread/i2c.c
+++ b/drivers/nfc/microread/i2c.c
@@ -246,18 +246,10 @@ static int microread_i2c_probe(struct i2c_client *client,
246 const struct i2c_device_id *id) 246 const struct i2c_device_id *id)
247{ 247{
248 struct microread_i2c_phy *phy; 248 struct microread_i2c_phy *phy;
249 struct microread_nfc_platform_data *pdata =
250 dev_get_platdata(&client->dev);
251 int r; 249 int r;
252 250
253 dev_dbg(&client->dev, "client %p\n", client); 251 dev_dbg(&client->dev, "client %p\n", client);
254 252
255 if (!pdata) {
256 nfc_err(&client->dev, "client %p: missing platform data\n",
257 client);
258 return -EINVAL;
259 }
260
261 phy = devm_kzalloc(&client->dev, sizeof(struct microread_i2c_phy), 253 phy = devm_kzalloc(&client->dev, sizeof(struct microread_i2c_phy),
262 GFP_KERNEL); 254 GFP_KERNEL);
263 if (!phy) 255 if (!phy)
diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c
index 76c318444304..45d0e667d7ae 100644
--- a/drivers/nfc/pn544/i2c.c
+++ b/drivers/nfc/pn544/i2c.c
@@ -877,20 +877,8 @@ exit_state_wait_secure_write_answer:
877static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client) 877static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
878{ 878{
879 struct pn544_i2c_phy *phy = i2c_get_clientdata(client); 879 struct pn544_i2c_phy *phy = i2c_get_clientdata(client);
880 const struct acpi_device_id *id;
881 struct gpio_desc *gpiod_en, *gpiod_fw; 880 struct gpio_desc *gpiod_en, *gpiod_fw;
882 struct device *dev; 881 struct device *dev = &client->dev;
883
884 if (!client)
885 return -EINVAL;
886
887 dev = &client->dev;
888
889 /* Match the struct device against a given list of ACPI IDs */
890 id = acpi_match_device(dev->driver->acpi_match_table, dev);
891
892 if (!id)
893 return -ENODEV;
894 882
895 /* Get EN GPIO from ACPI */ 883 /* Get EN GPIO from ACPI */
896 gpiod_en = devm_gpiod_get_index(dev, PN544_GPIO_NAME_EN, 1, 884 gpiod_en = devm_gpiod_get_index(dev, PN544_GPIO_NAME_EN, 1,
diff --git a/include/linux/platform_data/microread.h b/include/linux/platform_data/microread.h
deleted file mode 100644
index ca13992089b8..000000000000
--- a/include/linux/platform_data/microread.h
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Driver include for the Inside Secure microread NFC Chip.
3 *
4 * Copyright (C) 2011 Tieto Poland
5 * Copyright (C) 2012 Intel Corporation. All rights reserved.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * version 2 as published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#ifndef _MICROREAD_H
22#define _MICROREAD_H
23
24#include <linux/i2c.h>
25
26#define MICROREAD_DRIVER_NAME "microread"
27
28/* board config platform data for microread */
29struct microread_nfc_platform_data {
30 unsigned int rst_gpio;
31 unsigned int irq_gpio;
32 unsigned int ioh_gpio;
33};
34
35#endif /* _MICROREAD_H */
diff --git a/net/nfc/llcp_commands.c b/net/nfc/llcp_commands.c
index 3621a902cb6e..3425532c39f7 100644
--- a/net/nfc/llcp_commands.c
+++ b/net/nfc/llcp_commands.c
@@ -663,7 +663,7 @@ int nfc_llcp_send_i_frame(struct nfc_llcp_sock *sock,
663 return -ENOBUFS; 663 return -ENOBUFS;
664 } 664 }
665 665
666 msg_data = kzalloc(len, GFP_KERNEL); 666 msg_data = kmalloc(len, GFP_USER | __GFP_NOWARN);
667 if (msg_data == NULL) 667 if (msg_data == NULL)
668 return -ENOMEM; 668 return -ENOMEM;
669 669
@@ -729,7 +729,7 @@ int nfc_llcp_send_ui_frame(struct nfc_llcp_sock *sock, u8 ssap, u8 dsap,
729 if (local == NULL) 729 if (local == NULL)
730 return -ENODEV; 730 return -ENODEV;
731 731
732 msg_data = kzalloc(len, GFP_KERNEL); 732 msg_data = kmalloc(len, GFP_USER | __GFP_NOWARN);
733 if (msg_data == NULL) 733 if (msg_data == NULL)
734 return -ENOMEM; 734 return -ENOMEM;
735 735
diff --git a/net/nfc/llcp_sock.c b/net/nfc/llcp_sock.c
index ecf0a0196f18..b9edf5fae6ae 100644
--- a/net/nfc/llcp_sock.c
+++ b/net/nfc/llcp_sock.c
@@ -509,6 +509,11 @@ static int llcp_sock_getname(struct socket *sock, struct sockaddr *uaddr,
509 memset(llcp_addr, 0, sizeof(*llcp_addr)); 509 memset(llcp_addr, 0, sizeof(*llcp_addr));
510 *len = sizeof(struct sockaddr_nfc_llcp); 510 *len = sizeof(struct sockaddr_nfc_llcp);
511 511
512 lock_sock(sk);
513 if (!llcp_sock->dev) {
514 release_sock(sk);
515 return -EBADFD;
516 }
512 llcp_addr->sa_family = AF_NFC; 517 llcp_addr->sa_family = AF_NFC;
513 llcp_addr->dev_idx = llcp_sock->dev->idx; 518 llcp_addr->dev_idx = llcp_sock->dev->idx;
514 llcp_addr->target_idx = llcp_sock->target_idx; 519 llcp_addr->target_idx = llcp_sock->target_idx;
@@ -518,6 +523,7 @@ static int llcp_sock_getname(struct socket *sock, struct sockaddr *uaddr,
518 llcp_addr->service_name_len = llcp_sock->service_name_len; 523 llcp_addr->service_name_len = llcp_sock->service_name_len;
519 memcpy(llcp_addr->service_name, llcp_sock->service_name, 524 memcpy(llcp_addr->service_name, llcp_sock->service_name,
520 llcp_addr->service_name_len); 525 llcp_addr->service_name_len);
526 release_sock(sk);
521 527
522 return 0; 528 return 0;
523} 529}