* Re: [PATCH] tcp: disable auto corking by default
From: Thomas Glanzmann @ 2014-02-08 17:20 UTC (permalink / raw)
To: Eric Dumazet
Cc: Eric Dumazet, David S. Miller, Nicholas A. Bellinger,
target-devel, Linux Network Development, LKML
In-Reply-To: <1391879558.10160.112.camel@edumazet-glaptop2.roam.corp.google.com>
Hello Eric,
> Sure, but if we put this flag to zero, nobody will ever use it and
> find any bug.
I agree.
> If we can add the MSG_MORE at the right place, your workload might gain
> ~20% exec time, and maybe 30% better efficiency, since you'll divide by
> 2 the total number of network segments.
That is in fact promising.
> Just to be clear: No stable kernel has yet any issue, right?
Not with TCP CORK as it was recently introduced in the development
branch but it will become stable at one point.
Cheers,
Thomas
^ permalink raw reply
* Re: IPv6 FIB related crash with MACVLANs in 3.9.11+ kernel.
From: Hannes Frederic Sowa @ 2014-02-08 17:23 UTC (permalink / raw)
To: Ben Greear; +Cc: netdev
In-Reply-To: <52F65EB4.1050306@candelatech.com>
On Sat, Feb 08, 2014 at 08:43:32AM -0800, Ben Greear wrote:
> On 02/03/2014 02:06 PM, Ben Greear wrote:
> > On 02/03/2014 02:03 PM, Hannes Frederic Sowa wrote:
> >> Hi Ben,
> >>
> >> On Mon, Feb 03, 2014 at 12:37:52PM -0800, Ben Greear wrote:
> >>> The kernel has some additional patches, but not much to IPv6.
> >>>
> >>> The bug is that when we have lots of mac-vlans on some ixgbe ports
> >>> (500 per interface in this case), and boot up the system with the ports unplugged,
> >>> we get this crash almost every time. Boot-up is going to do normal bootup
> >>> stuff plus create and configure the 1000 mac-vlans, dump their routing
> >>> tables, etc.
> >>>
> >>> We are using one routing table per network device, and some
> >>> ip rules.
> >>>
> >>> If we plug in the ixgbe ports, we do not ever see a crash.
> >>>
> >>> We have not yet tried reproducing it on other drivers, but I suspect
> >>> the issue is not related to ixgbe.
> >>>
> >>> Any ideas on this one?
> >>
> >> Could you bring the machine to a panic again with enabling RT6_DEBUG at the
> >> top of ip6_fib.c and send a dump of the trace?
> >
> > Yes, but it will be a bit until we can create a duplicate machine.
> > We ended up delivering the machine with a note to make sure the
> > interfaces were plugged in (we found the bug hours before shipping
> > the system, of course).
>
> According to my system test guy, it took a lot longer to reproduce
> the problem with the debug enabled kernel, but I do not see any extra
> debug messages on the serial console logging or in /var/log/messages
Sounds like a race, then, like I thought.
I forgot, those are pr_debugs, I usually enable them with
$ echo file net/ipv6/ip6_fib.c +p > /sys/kernel/debug/dynamic_debug/control
RT6_TRACE is pretty noisy so you should see output immediatley if you do ipv6
traffic. Other way is to specify dyndbg="file net/ipv6/ip6_fib.c +p" on the
kernel command line.
Try before doing to play with that until you can confirm the output showes up
on the console.
Thanks again,
Hannes
^ permalink raw reply
* [PATCH] bridge: Unbreak netconsole
From: Bart Van Assche @ 2014-02-08 18:41 UTC (permalink / raw)
To: David S. Miller
Cc: Stephen Hemminger, Jiri Pirko, Neil Horman,
netdev@vger.kernel.org
Sending netconsole messages over a bridge network interface doesn't
work anymore since kernel v3.12. Bisecting this led to the patch
"bridge: cleanup netpoll code". Hence revert that patch (commit
93d8bf9fb8f39d6d3e461db60f883d9f81006159).
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Jiri Pirko <jiri@resnulli.us>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: <stable@vger.kernel.org> # 3.12
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=70071
---
net/bridge/br_device.c | 12 ++++++------
net/bridge/br_if.c | 3 +--
net/bridge/br_private.h | 10 ++++++++++
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index e4401a5..ab69594 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -252,22 +252,22 @@ fail:
int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
{
struct netpoll *np;
- int err;
-
- if (!p->br->dev->npinfo)
- return 0;
+ int err = 0;
np = kzalloc(sizeof(*p->np), gfp);
+ err = -ENOMEM;
if (!np)
- return -ENOMEM;
+ goto out;
err = __netpoll_setup(np, p->dev, gfp);
if (err) {
kfree(np);
- return err;
+ goto out;
}
p->np = np;
+
+out:
return err;
}
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index cffe1d6..639231a 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -366,8 +366,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
if (err)
goto err2;
- err = br_netpoll_enable(p, GFP_KERNEL);
- if (err)
+ if (br_netpoll_info(br) && ((err = br_netpoll_enable(p, GFP_KERNEL))))
goto err3;
err = netdev_master_upper_dev_link(dev, br->dev);
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index fcd1233..52d63bf 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -339,6 +339,11 @@ void br_dev_setup(struct net_device *dev);
void br_dev_delete(struct net_device *dev, struct list_head *list);
netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev);
#ifdef CONFIG_NET_POLL_CONTROLLER
+static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
+{
+ return br->dev->npinfo;
+}
+
static inline void br_netpoll_send_skb(const struct net_bridge_port *p,
struct sk_buff *skb)
{
@@ -351,6 +356,11 @@ static inline void br_netpoll_send_skb(const struct net_bridge_port *p,
int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp);
void br_netpoll_disable(struct net_bridge_port *p);
#else
+static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
+{
+ return NULL;
+}
+
static inline void br_netpoll_send_skb(const struct net_bridge_port *p,
struct sk_buff *skb)
{
--
1.8.4.5
^ permalink raw reply related
* [PATCH/RESEND] 3c59x: Remove unused pointer in vortex_eisa_cleanup()
From: Christian Engelmayer @ 2014-02-08 19:10 UTC (permalink / raw)
To: steffen; +Cc: netdev
In-Reply-To: <20140208181117.6776b154@spike>
[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]
Remove unused network device private data pointer 'vp' in function
vortex_eisa_cleanup(). Detected by Coverity: CID 139826.
Signed-off-by: Christian Engelmayer <cengelma@gmx.at>
---
Resend using address steffen@klassert.de as retrieved from the mail delivery
fail notification by tu-chemnitz.de. Information in MAINTAINERS seems to be
outdated on that point.
---
drivers/net/ethernet/3com/3c59x.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
index 0f4241c..238ccea 100644
--- a/drivers/net/ethernet/3com/3c59x.c
+++ b/drivers/net/ethernet/3com/3c59x.c
@@ -3294,7 +3294,6 @@ static int __init vortex_init(void)
static void __exit vortex_eisa_cleanup(void)
{
- struct vortex_private *vp;
void __iomem *ioaddr;
#ifdef CONFIG_EISA
@@ -3303,7 +3302,6 @@ static void __exit vortex_eisa_cleanup(void)
#endif
if (compaq_net_device) {
- vp = netdev_priv(compaq_net_device);
ioaddr = ioport_map(compaq_net_device->base_addr,
VORTEX_TOTAL_SIZE);
--
1.8.3.2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply related
* [PATCH 0/2] Attention by Linus Torvalds needed to export symbol he wrote
From: Richard Yao @ 2014-02-08 19:11 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Brian Behlendorf, Matthew Thode
Dear Linus,
Loading kernel modules off 9p-virtio in a Linux guest causes VM termination
because of a page fault in unmapped memory, so I wrote a patch to fix it. Dave
Miller initially accepted it, but then rejected it because it calls an
unexported symbol from a kernel module, which breaks the build when
CONFIG_NET_9P_VIRTIO=m is set in the kernel config:
https://groups.google.com/forum/#!topic/linux.kernel/eRR7AyLE29Y
>From what I can tell, I need the original author of a symbol to sign-off on any
patch exporting it. git blame says that the original author is you, so I am
sending this pull request to you for approval.
Richard Yao (2):
mm/vmalloc: export is_vmalloc_or_module_addr
9p/trans_virtio.c: Fix broken zero-copy on vmalloc() buffers
mm/vmalloc.c | 1 +
net/9p/trans_virtio.c | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
--
1.8.3.2
^ permalink raw reply
* [PATCH 0/2] Attention by Linus Torvalds needed to export symbol he wrote
From: Richard Yao @ 2014-02-08 19:12 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Matthew Thode
Dear Linus,
Loading kernel modules off 9p-virtio in a Linux guest causes VM termination
because of a page fault in unmapped memory, so I wrote a patch to fix it. Dave
Miller initially accepted it, but then rejected it because it calls an
unexported symbol from a kernel module, which breaks the build when
CONFIG_NET_9P_VIRTIO=m is set in the kernel config:
https://groups.google.com/forum/#!topic/linux.kernel/eRR7AyLE29Y
>From what I can tell, I need the original author of a symbol to sign-off on any
patch exporting it. git blame says that the original author is you, so I am
sending this pull request to you for approval.
Richard Yao (2):
mm/vmalloc: export is_vmalloc_or_module_addr
9p/trans_virtio.c: Fix broken zero-copy on vmalloc() buffers
mm/vmalloc.c | 1 +
net/9p/trans_virtio.c | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
--
1.8.3.2
^ permalink raw reply
* [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr
From: Richard Yao @ 2014-02-08 19:12 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Matthew Thode
In-Reply-To: <1391886730-19667-1-git-send-email-ryao@gentoo.org>
9p-virtio needs is_vmalloc_or_module_addr exported before a patch can be
merged to prevent the virtio zero-copy routines from triggering a
hypervisor page fault when loading kernel modules:
https://groups.google.com/forum/#!topic/linux.kernel/eRR7AyLE29Y
Without this export, the kernel build breaks with that patch applied and
CONFIG_NET_9P_VIRTIO=m. With this export in place, all is well.
Signed-off-by: Richard Yao <ryao@gentoo.org>
---
mm/vmalloc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 0fdf968..8a2e54f 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -218,6 +218,7 @@ int is_vmalloc_or_module_addr(const void *x)
#endif
return is_vmalloc_addr(x);
}
+EXPORT_SYMBOL(is_vmalloc_or_module_addr);
/*
* Walk a vmap address to the struct page it maps.
--
1.8.3.2
^ permalink raw reply related
* [PATCH 2/2] 9p/trans_virtio.c: Fix broken zero-copy on vmalloc() buffers
From: Richard Yao @ 2014-02-08 19:12 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Matthew Thode
In-Reply-To: <1391886730-19667-1-git-send-email-ryao@gentoo.org>
The 9p-virtio transport does zero copy on things larger than 1024 bytes
in size. It accomplishes this by returning the physical addresses of
pages to the virtio-pci device. At present, the translation is usually a
bit shift.
However, that approach produces an invalid page address when we
read/write to vmalloc buffers, such as those used for Linux kernle
modules. This causes QEMU to die printing:
qemu-system-x86_64: virtio: trying to map MMIO memory
This patch enables 9p-virtio to correctly handle this case. This not
only enables us to load Linux kernel modules off virtfs, but also
enables ZFS file-based vdevs on virtfs to be used without killing QEMU.
Also, special thanks to both Avi Kivity and Alexander Graf for their
interpretation of QEMU backtraces. Without their guidence, tracking down
this bug would have taken much longer.
Signed-off-by: Richard Yao <ryao@gentoo.org>
Acked-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Will Deacon <will.deacon@arm.com>
---
net/9p/trans_virtio.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index cd1e1ed..b2009bc 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -340,7 +340,10 @@ static int p9_get_mapped_pages(struct virtio_chan *chan,
int count = nr_pages;
while (nr_pages) {
s = rest_of_page(data);
- pages[index++] = kmap_to_page(data);
+ if (is_vmalloc_or_module_addr(data))
+ pages[index++] = vmalloc_to_page(data);
+ else
+ pages[index++] = kmap_to_page(data);
data += s;
nr_pages--;
}
--
1.8.3.2
^ permalink raw reply related
* Re: REGRESSION f54b311142a92ea2e42598e347b84e1655caf8e3 tcp auto corking slows down iSCSI file system creation by factor of 70 [WAS: 4 TB VMFS creation takes 15 minutes vs 26 seconds]
From: Eric Dumazet @ 2014-02-08 19:12 UTC (permalink / raw)
To: Thomas Glanzmann
Cc: John Ogness, Eric Dumazet, David S. Miller, Nicholas A. Bellinger,
target-devel, Linux Network Development, LKML
In-Reply-To: <20140208171531.GA23798@glanzmann.de>
On Sat, 2014-02-08 at 18:15 +0100, Thomas Glanzmann wrote:
> The iSCSI target uses one function to send all outbound data. So in
> order to do it right every function that is sending data in multiple
> chunks need to mark it correctly. Of course someone could also do some
> wild guessing and saying that everything that is below 512 Bytes gets
> pushed out. I wonder what Nab has to say about this?
I was simply thinking about something like :
(might need further changes, but I guess this should solve your case)
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
index 0819e688a398..44f0d62a88d6 100644
--- a/drivers/target/iscsi/iscsi_target_util.c
+++ b/drivers/target/iscsi/iscsi_target_util.c
@@ -1165,7 +1165,7 @@ send_data:
iov_count = cmd->iov_misc_count;
}
- tx_sent = tx_data(conn, &iov[0], iov_count, tx_size);
+ tx_sent = tx_data(conn, &iov[0], iov_count, tx_size, 0);
if (tx_size != tx_sent) {
if (tx_sent == -EAGAIN) {
pr_err("tx_data() returned -EAGAIN\n");
@@ -1196,7 +1196,8 @@ send_hdr:
iov.iov_base = cmd->pdu;
iov.iov_len = tx_hdr_size;
- tx_sent = tx_data(conn, &iov, 1, tx_hdr_size);
+ data_len = cmd->tx_size - tx_hdr_size - cmd->padding;
+ tx_sent = tx_data(conn, &iov, 1, tx_hdr_size, data_len ? MSG_MORE : 0);
if (tx_hdr_size != tx_sent) {
if (tx_sent == -EAGAIN) {
pr_err("tx_data() returned -EAGAIN\n");
@@ -1205,7 +1206,6 @@ send_hdr:
return -1;
}
- data_len = cmd->tx_size - tx_hdr_size - cmd->padding;
/*
* Set iov_off used by padding and data digest tx_data() calls below
* in order to determine proper offset into cmd->iov_data[]
@@ -1249,7 +1249,8 @@ send_padding:
if (cmd->padding) {
struct kvec *iov_p = &cmd->iov_data[iov_off++];
- tx_sent = tx_data(conn, iov_p, 1, cmd->padding);
+ tx_sent = tx_data(conn, iov_p, 1, cmd->padding,
+ conn->conn_ops->DataDigest ? MSG_MORE : 0);
if (cmd->padding != tx_sent) {
if (tx_sent == -EAGAIN) {
pr_err("tx_data() returned -EAGAIN\n");
@@ -1263,7 +1264,7 @@ send_datacrc:
if (conn->conn_ops->DataDigest) {
struct kvec *iov_d = &cmd->iov_data[iov_off];
- tx_sent = tx_data(conn, iov_d, 1, ISCSI_CRC_LEN);
+ tx_sent = tx_data(conn, iov_d, 1, ISCSI_CRC_LEN, 0);
if (ISCSI_CRC_LEN != tx_sent) {
if (tx_sent == -EAGAIN) {
pr_err("tx_data() returned -EAGAIN\n");
@@ -1349,11 +1350,12 @@ static int iscsit_do_rx_data(
static int iscsit_do_tx_data(
struct iscsi_conn *conn,
- struct iscsi_data_count *count)
+ struct iscsi_data_count *count,
+ int flags)
{
int data = count->data_length, total_tx = 0, tx_loop = 0, iov_len;
struct kvec *iov_p;
- struct msghdr msg;
+ struct msghdr msg = { .msg_flags = flags };
if (!conn || !conn->sock || !conn->conn_ops)
return -1;
@@ -1363,8 +1365,6 @@ static int iscsit_do_tx_data(
return -1;
}
- memset(&msg, 0, sizeof(struct msghdr));
-
iov_p = count->iov;
iov_len = count->iov_count;
@@ -1408,7 +1408,8 @@ int tx_data(
struct iscsi_conn *conn,
struct kvec *iov,
int iov_count,
- int data)
+ int data,
+ int flags)
{
struct iscsi_data_count c;
@@ -1421,7 +1422,7 @@ int tx_data(
c.data_length = data;
c.type = ISCSI_TX_DATA;
- return iscsit_do_tx_data(conn, &c);
+ return iscsit_do_tx_data(conn, &c, flags);
}
void iscsit_collect_login_stats(
diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h
index e4fc34a02f57..1b4f06801adc 100644
--- a/drivers/target/iscsi/iscsi_target_util.h
+++ b/drivers/target/iscsi/iscsi_target_util.h
@@ -54,7 +54,7 @@ extern int iscsit_print_dev_to_proc(char *, char **, off_t, int);
extern int iscsit_print_sessions_to_proc(char *, char **, off_t, int);
extern int iscsit_print_tpg_to_proc(char *, char **, off_t, int);
extern int rx_data(struct iscsi_conn *, struct kvec *, int, int);
-extern int tx_data(struct iscsi_conn *, struct kvec *, int, int);
+extern int tx_data(struct iscsi_conn *, struct kvec *, int, int, int);
extern void iscsit_collect_login_stats(struct iscsi_conn *, u8, u8);
extern struct iscsi_tiqn *iscsit_snmp_get_tiqn(struct iscsi_conn *);
^ permalink raw reply related
* Re: [PATCH v2] SUNRPC: Allow one callback request to be received from two sk_buff
From: Sergei Shtylyov @ 2014-02-08 19:14 UTC (permalink / raw)
To: shaobingqing, trond.myklebust-7I+n7zu2hftEKMMhf/gKZA,
bfields-H+wXaHxf7aLQT0dZR+AlfA, davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1391826543-3102-1-git-send-email-shaobingqing-Gb3srWounXyPt1CcHtbs0g@public.gmane.org>
Hello.
On 08-02-2014 6:29, shaobingqing wrote:
> In current code, there only one struct rpc_rqst is prealloced. If one
> callback request is received from two sk_buff, the xprt_alloc_bc_request
> would be execute two times with the same transport->xid. The first time
> xprt_alloc_bc_request will alloc one struct rpc_rqst and the TCP_RCV_COPY_DATA
> bit of transport->tcp_flags will not be cleared. The second time
> xprt_alloc_bc_request could not alloc struct rpc_rqst any more and NULL
> pointer will be returned, then xprt_force_disconnect occur. I think one
> callback request can be allowed to be received from two sk_buff.
> Signed-off-by: shaobingqing <shaobingqing-Gb3srWounXyPt1CcHtbs0g@public.gmane.org>
[...]
> diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
> index cec7b9b..82bfe01 100644
> --- a/include/linux/sunrpc/xprt.h
> +++ b/include/linux/sunrpc/xprt.h
> @@ -211,6 +211,7 @@ struct rpc_xprt {
> * items */
> struct list_head bc_pa_list; /* List of preallocated
> * backchannel rpc_rqst's */
> + struct rpc_rqst *req_first;
Please align the variable name with the ones above and below.
> #endif /* CONFIG_SUNRPC_BACKCHANNEL */
> struct list_head recv;
>
[...]
> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
> index ee03d35..c43dca4 100644
> --- a/net/sunrpc/xprtsock.c
> +++ b/net/sunrpc/xprtsock.c
> @@ -1272,7 +1272,16 @@ static inline int xs_tcp_read_callback(struct rpc_xprt *xprt,
> container_of(xprt, struct sock_xprt, xprt);
> struct rpc_rqst *req;
>
> - req = xprt_alloc_bc_request(xprt);
> + if (xprt->req_first != NULL &&
> + xprt->req_first->rq_xid == transport->tcp_xid) {
The continuation line should be aligned right under 'xprt' on the broken
up line, according to the networking coding style.
> + req = xprt->req_first;
> + } else if (xprt->req_first != NULL &&
> + xprt->req_first->rq_xid != transport->tcp_xid) {
Same here.
WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr
From: Linus Torvalds @ 2014-02-08 19:45 UTC (permalink / raw)
To: Richard Yao, Mel Gorman, Andrew Morton, Rik van Riel
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Matthew Thode
In-Reply-To: <1391886730-19667-2-git-send-email-ryao@gentoo.org>
On Sat, Feb 8, 2014 at 11:12 AM, Richard Yao <ryao@gentoo.org> wrote:
> 9p-virtio needs is_vmalloc_or_module_addr exported before a patch can be
> merged to prevent the virtio zero-copy routines from triggering a
> hypervisor page fault when loading kernel modules:
>
> https://groups.google.com/forum/#!topic/linux.kernel/eRR7AyLE29Y
>
> Without this export, the kernel build breaks with that patch applied and
> CONFIG_NET_9P_VIRTIO=m. With this export in place, all is well.
I absolutely *detest* this patch.
Not so much because is_vmalloc_or_module_addr() should never be used,
but because the particular use in question is pure and utter garbage.
There are valid reasons to use "is_vmalloc_or_module_addr()", but
those are along the lines of drivers/char/mem.c, which says "return
-ENXIO for this crap".
And btw, that horrid crap called "kmap_to_page()" needs to die too.
When is it *ever* valid to use a kmap'ed page for IO? Here's a clue:
never.
I notice that we have a similar abortion in "get_kernel_page[s]()",
which probably has the same broken source.
We need to get *rid* of this crap, rather than add more of it. I
should have looked more closely, but it came in through Andrew, which
generally makes me go "ok, Andrew sends me a VM patch - apply". In
this case it was clearly a huge mistake.
So who the f*ck sends static module data as IO? Just stop doing that.
What's And that idiotic kmap_to_page() really needs to die too.
Those *disgusting* get_kernel_page[s]() functions came with a
commentary about "The initial user is expected to be NFS.." and that
is still the *only* user. The fact that *everybody* else has been able
to avoid that crap should tell us something.
Mel, Rik, this needs to die. I'm sorry I didn't notice how crap it was earlier.
And what's the backtrace that gets mentioned - but not quoted - for
the horrible 9p crap? So that we can see who the guilty party is that
thinks that it's somehow ok to pass module addresses off to other
kernel users..
Please let's just fix the real problem, don't add more horridness on
top of it because somebody messed up earlier.
Linus
^ permalink raw reply
* [PATCH 01/13] net: Mark function as static in 9p/client.c
From: Rashika Kheria @ 2014-02-08 19:47 UTC (permalink / raw)
To: linux-kernel
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, v9fs-developer, netdev, josh
Mark function as static in net/9p/client.c because it is not used
outside this file.
This eliminates the following warning in net/9p/client.c:
net/9p/client.c:207:18: warning: no previous prototype for ‘p9_fcall_alloc’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
net/9p/client.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/9p/client.c b/net/9p/client.c
index a5e4d2d..9186550 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -204,7 +204,7 @@ free_and_return:
return ret;
}
-struct p9_fcall *p9_fcall_alloc(int alloc_msize)
+static struct p9_fcall *p9_fcall_alloc(int alloc_msize)
{
struct p9_fcall *fc;
fc = kmalloc(sizeof(struct p9_fcall) + alloc_msize, GFP_NOFS);
--
1.7.9.5
^ permalink raw reply related
* [PATCH 02/13] net: Include appropriate header file in caif/caif_dev.c
From: Rashika Kheria @ 2014-02-08 19:49 UTC (permalink / raw)
To: linux-kernel; +Cc: Dmitry Tarnyagin, David S. Miller, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Include appropriate header file net/caif/caif_dev.h in caif/caif_dev.c
because it has prototype declarations of function defined in
caif/caif_dev.c.
This eliminates the following file in caif/caif_dev.c:
net/caif/caif_dev.c:303:6: warning: no previous prototype for ‘caif_enroll_dev’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
net/caif/caif_dev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
index 4dca159..edbca46 100644
--- a/net/caif/caif_dev.c
+++ b/net/caif/caif_dev.c
@@ -22,6 +22,7 @@
#include <net/pkt_sched.h>
#include <net/caif/caif_device.h>
#include <net/caif/caif_layer.h>
+#include <net/caif/caif_dev.h>
#include <net/caif/cfpkt.h>
#include <net/caif/cfcnfg.h>
#include <net/caif/cfserl.h>
--
1.7.9.5
^ permalink raw reply related
* [PATCH 03/13] net: Include appropriate header file in caif/cfsrvl.c
From: Rashika Kheria @ 2014-02-08 19:51 UTC (permalink / raw)
To: linux-kernel; +Cc: Dmitry Tarnyagin, David S. Miller, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Include appropriate header file net/caif/caif_dev.h in caif/cfsrvl.c
because it has prototype declaration of functions defined in
caif/cfsrvl.c.
This eliminates the following warning in caif/cfsrvl.c:
net/caif/cfsrvl.c:198:6: warning: no previous prototype for ‘caif_free_client’ [-Wmissing-prototypes]
net/caif/cfsrvl.c:208:6: warning: no previous prototype for ‘caif_client_register_refcnt’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
net/caif/cfsrvl.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/caif/cfsrvl.c b/net/caif/cfsrvl.c
index 353f793..a6e1154 100644
--- a/net/caif/cfsrvl.c
+++ b/net/caif/cfsrvl.c
@@ -15,6 +15,7 @@
#include <net/caif/caif_layer.h>
#include <net/caif/cfsrvl.h>
#include <net/caif/cfpkt.h>
+#include <net/caif/caif_dev.h>
#define SRVL_CTRL_PKT_SIZE 1
#define SRVL_FLOW_OFF 0x81
--
1.7.9.5
^ permalink raw reply related
* [PATCH 04/13] net: Mark functions as static in core/dev.c
From: Rashika Kheria @ 2014-02-08 19:53 UTC (permalink / raw)
To: linux-kernel
Cc: josh, David S. Miller, Eric Dumazet, Veaceslav Falico,
Nicolas Dichtel, Jiri Pirko, Pravin B Shelar, Cong Wang, netdev
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Mark functions as static in core/dev.c because they are not used outside
this file.
This eliminates the following warning in core/dev.c:
net/core/dev.c:2806:5: warning: no previous prototype for ‘__dev_queue_xmit’ [-Wmissing-prototypes]
net/core/dev.c:4640:5: warning: no previous prototype for ‘netdev_adjacent_sysfs_add’ [-Wmissing-prototypes]
net/core/dev.c:4650:6: warning: no previous prototype for ‘netdev_adjacent_sysfs_del’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
net/core/dev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 3721db7..4ad1b78 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2803,7 +2803,7 @@ EXPORT_SYMBOL(dev_loopback_xmit);
* the BH enable code must have IRQs enabled so that it will not deadlock.
* --BLG
*/
-int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
+static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
{
struct net_device *dev = skb->dev;
struct netdev_queue *txq;
@@ -4637,7 +4637,7 @@ struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev)
}
EXPORT_SYMBOL(netdev_master_upper_dev_get_rcu);
-int netdev_adjacent_sysfs_add(struct net_device *dev,
+static int netdev_adjacent_sysfs_add(struct net_device *dev,
struct net_device *adj_dev,
struct list_head *dev_list)
{
@@ -4647,7 +4647,7 @@ int netdev_adjacent_sysfs_add(struct net_device *dev,
return sysfs_create_link(&(dev->dev.kobj), &(adj_dev->dev.kobj),
linkname);
}
-void netdev_adjacent_sysfs_del(struct net_device *dev,
+static void netdev_adjacent_sysfs_del(struct net_device *dev,
char *name,
struct list_head *dev_list)
{
--
1.7.9.5
^ permalink raw reply related
* [PATCH 05/13] net: Mark function as static in core/filter.c
From: Rashika Kheria @ 2014-02-08 19:55 UTC (permalink / raw)
To: linux-kernel
Cc: David S. Miller, Eric Dumazet, Alexei Starovoitov,
Nicolas Dichtel, Daniel Borkmann, Rashika Kheria, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Mark function as static in core/filter.c because it is not used outside
this file.
This eliminates the following warning in core/filter.c:
net/core/filter.c:48:7: warning: no previous prototype for ‘bpf_internal_load_pointer_neg_helper’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
net/core/filter.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/core/filter.c b/net/core/filter.c
index ad30d62..a022dad 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -44,7 +44,8 @@
*
* Exported for the bpf jit load helper.
*/
-void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, int k, unsigned int size)
+static void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb,
+ int k, unsigned int size)
{
u8 *ptr = NULL;
--
1.7.9.5
^ permalink raw reply related
* [PATCH 06/13] net: Move prototype declaration to appropriate header file from decnet/af_decnet.c
From: Rashika Kheria @ 2014-02-08 19:58 UTC (permalink / raw)
To: linux-kernel
Cc: David S. Miller, Rashika Kheria, Gao feng, Sasha Levin,
Andrew Morton, Steffen Hurrle, Jiri Pirko, netdev,
linux-decnet-user, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Move prototype declaration of functions to header file include/net/dn_route.h
from net/decnet/af_decnet.c because it is used by more than one file.
This eliminates the following warning in net/decnet/dn_route.c:
net/decnet/dn_route.c:629:5: warning: no previous prototype for ‘dn_route_rcv’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
include/net/dn_route.h | 2 ++
net/decnet/af_decnet.c | 2 --
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/net/dn_route.h b/include/net/dn_route.h
index b409ad6..55df993 100644
--- a/include/net/dn_route.h
+++ b/include/net/dn_route.h
@@ -20,6 +20,8 @@ int dn_route_output_sock(struct dst_entry __rcu **pprt, struct flowidn *,
struct sock *sk, int flags);
int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb);
void dn_rt_cache_flush(int delay);
+int dn_route_rcv(struct sk_buff *skb, struct net_device *dev,
+ struct packet_type *pt, struct net_device *orig_dev);
/* Masks for flags field */
#define DN_RT_F_PID 0x07 /* Mask for packet type */
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
index 2954dcb..24d9193 100644
--- a/net/decnet/af_decnet.c
+++ b/net/decnet/af_decnet.c
@@ -2104,8 +2104,6 @@ static struct notifier_block dn_dev_notifier = {
.notifier_call = dn_device_event,
};
-extern int dn_route_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
-
static struct packet_type dn_dix_packet_type __read_mostly = {
.type = cpu_to_be16(ETH_P_DNA_RT),
.func = dn_route_rcv,
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr
From: Richard Yao @ 2014-02-08 19:58 UTC (permalink / raw)
To: Linus Torvalds, Mel Gorman, Andrew Morton, Rik van Riel
Cc: Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, V9FS Develooper Mailing List,
Linux Netdev Mailing List, Linux Kernel Mailing List,
Aneesh Kumar K.V, Will Deacon, Christopher Covington,
Matthew Thode
In-Reply-To: <CA+55aFx8TzOnW9xPFA4Ox-yFiSUo=cEqeQUmgw_JWjDNEZep8Q@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1688 bytes --]
On 02/08/2014 02:45 PM, Linus Torvalds wrote:
> On Sat, Feb 8, 2014 at 11:12 AM, Richard Yao <ryao@gentoo.org> wrote:
> And what's the backtrace that gets mentioned - but not quoted - for
> the horrible 9p crap? So that we can see who the guilty party is that
> thinks that it's somehow ok to pass module addresses off to other
> kernel users..
My apologies for that. Here is the backtrace:
[<ffffffff814878ce>] p9_virtio_zc_request+0x45e/0x510
[<ffffffff814814ed>] p9_client_zc_rpc.constprop.16+0xfd/0x4f0
[<ffffffff814839dd>] p9_client_read+0x15d/0x240
[<ffffffff811c8440>] v9fs_fid_readn+0x50/0xa0
[<ffffffff811c84a0>] v9fs_file_readn+0x10/0x20
[<ffffffff811c84e7>] v9fs_file_read+0x37/0x70
[<ffffffff8114e3fb>] vfs_read+0x9b/0x160
[<ffffffff81153571>] kernel_read+0x41/0x60
[<ffffffff810c83ab>] copy_module_from_fd.isra.34+0xfb/0x180
[<ffffffff810cc420>] SyS_finit_module+0x70/0xd0
[<ffffffff814a08fd>] system_call_fastpath+0x1a/0x1f
[<ffffffffffffffff>] 0xffffffffffffffff
The addresses are being passed to permit zero-copy between the guest and
the host. You can see this in the original thread back from December,
which is from before I knew how to submit patches properly:
http://www.spinics.net/lists/linux-virtualization/msg21734.html
> Please let's just fix the real problem, don't add more horridness on
> top of it because somebody messed up earlier.
This code avoids a copy between QEMU's 9p server and a guest Linux
kernel. Without it, the 9p-virtio code must allocate additional buffers
into which QEMU will write the data and then copy from those buffers
into the actual kernel buffers. How would you like 9p-virtio to do this?
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* [PATCH 07/13] net: Move prototype declaration to header file include/net/dn.h from net/decnet/af_decnet.c
From: Rashika Kheria @ 2014-02-08 19:59 UTC (permalink / raw)
To: linux-kernel
Cc: David S. Miller, Rashika Kheria, Gao feng, Sasha Levin,
Andrew Morton, Steffen Hurrle, Jiri Pirko, netdev,
linux-decnet-user, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Move prototype declaration of functions to header file include/net/dn.h
from net/decnet/af_decnet.c because they are used by more than one file.
This eliminates the following warning in net/decnet/af_decnet.c:
net/decnet/sysctl_net_decnet.c:354:6: warning: no previous prototype for ‘dn_register_sysctl’ [-Wmissing-prototypes]
net/decnet/sysctl_net_decnet.c:359:6: warning: no previous prototype for ‘dn_unregister_sysctl’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
include/net/dn.h | 2 ++
net/decnet/af_decnet.c | 3 ---
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/include/net/dn.h b/include/net/dn.h
index ccc1558..913b73d 100644
--- a/include/net/dn.h
+++ b/include/net/dn.h
@@ -200,6 +200,8 @@ static inline void dn_sk_ports_copy(struct flowidn *fld, struct dn_scp *scp)
}
unsigned int dn_mss_from_pmtu(struct net_device *dev, int mtu);
+void dn_register_sysctl(void);
+void dn_unregister_sysctl(void);
#define DN_MENUVER_ACC 0x01
#define DN_MENUVER_USR 0x02
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
index 24d9193..4c04848 100644
--- a/net/decnet/af_decnet.c
+++ b/net/decnet/af_decnet.c
@@ -2351,9 +2351,6 @@ static const struct proto_ops dn_proto_ops = {
.sendpage = sock_no_sendpage,
};
-void dn_register_sysctl(void);
-void dn_unregister_sysctl(void);
-
MODULE_DESCRIPTION("The Linux DECnet Network Protocol");
MODULE_AUTHOR("Linux DECnet Project Team");
MODULE_LICENSE("GPL");
--
1.7.9.5
^ permalink raw reply related
* [PATCH 08/13] net: Move prototype declaration to include/net/ipx.h from net/ipx/ipx_route.c
From: Rashika Kheria @ 2014-02-08 20:02 UTC (permalink / raw)
To: linux-kernel
Cc: Arnaldo Carvalho de Melo, David S. Miller, Alexey Kuznetsov,
James Morris, Hideaki YOSHIFUJI, Patrick McHardy, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Move prototype definition of function to header file include/net/ipx.h
from net/ipx/ipx_route.c because they are used by more than one file.
This eliminates the following warning from net/ipx/af_ipx.c:
net/ipx/af_ipx.c:193:23: warning: no previous prototype for ‘ipxitf_find_using_net’ [-Wmissing-prototypes]
net/ipx/af_ipx.c:577:5: warning: no previous prototype for ‘ipxitf_send’ [-Wmissing-prototypes]
net/ipx/af_ipx.c:1219:8: warning: no previous prototype for ‘ipx_cksum’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
include/net/ipx.h | 3 +++
net/ipx/ipx_route.c | 4 ----
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/include/net/ipx.h b/include/net/ipx.h
index 9e9e354..75466ac 100644
--- a/include/net/ipx.h
+++ b/include/net/ipx.h
@@ -140,6 +140,9 @@ static __inline__ void ipxitf_hold(struct ipx_interface *intrfc)
}
void ipxitf_down(struct ipx_interface *intrfc);
+struct ipx_interface *ipxitf_find_using_net(__be32 net);
+int ipxitf_send(struct ipx_interface *intrfc, struct sk_buff *skb, char *node);
+__be16 ipx_cksum(struct ipxhdr *packet, int length);
static __inline__ void ipxitf_put(struct ipx_interface *intrfc)
{
diff --git a/net/ipx/ipx_route.c b/net/ipx/ipx_route.c
index 30f4519..c1f0318 100644
--- a/net/ipx/ipx_route.c
+++ b/net/ipx/ipx_route.c
@@ -20,15 +20,11 @@ DEFINE_RWLOCK(ipx_routes_lock);
extern struct ipx_interface *ipx_internal_net;
-extern __be16 ipx_cksum(struct ipxhdr *packet, int length);
extern struct ipx_interface *ipxitf_find_using_net(__be32 net);
extern int ipxitf_demux_socket(struct ipx_interface *intrfc,
struct sk_buff *skb, int copy);
extern int ipxitf_demux_socket(struct ipx_interface *intrfc,
struct sk_buff *skb, int copy);
-extern int ipxitf_send(struct ipx_interface *intrfc, struct sk_buff *skb,
- char *node);
-extern struct ipx_interface *ipxitf_find_using_net(__be32 net);
struct ipx_route *ipxrtr_lookup(__be32 net)
{
--
1.7.9.5
^ permalink raw reply related
* [PATCH 09/13] net: Move prototype declaration to header file include/net/ipx.h from net/ipx/af_ipx.c
From: Rashika Kheria @ 2014-02-08 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Arnaldo Carvalho de Melo, David S. Miller, Alexey Kuznetsov,
James Morris, Hideaki YOSHIFUJI, Patrick McHardy, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Move prototype declaration of functions to header file include/net/ipx.h
from net/ipx/af_ipx.c because they are used by more than one file.
This eliminates the following warning in
net/ipx/ipx_route.c:33:19: warning: no previous prototype for ‘ipxrtr_lookup’ [-Wmissing-prototypes]
net/ipx/ipx_route.c:52:5: warning: no previous prototype for ‘ipxrtr_add_route’ [-Wmissing-prototypes]
net/ipx/ipx_route.c:94:6: warning: no previous prototype for ‘ipxrtr_del_routes’ [-Wmissing-prototypes]
net/ipx/ipx_route.c:149:5: warning: no previous prototype for ‘ipxrtr_route_skb’ [-Wmissing-prototypes]
net/ipx/ipx_route.c:171:5: warning: no previous prototype for ‘ipxrtr_route_packet’ [-Wmissing-prototypes]
net/ipx/ipx_route.c:261:5: warning: no previous prototype for ‘ipxrtr_ioctl’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
include/net/ipx.h | 8 ++++++++
net/ipx/af_ipx.c | 9 ---------
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/include/net/ipx.h b/include/net/ipx.h
index 75466ac..0143180 100644
--- a/include/net/ipx.h
+++ b/include/net/ipx.h
@@ -143,6 +143,14 @@ void ipxitf_down(struct ipx_interface *intrfc);
struct ipx_interface *ipxitf_find_using_net(__be32 net);
int ipxitf_send(struct ipx_interface *intrfc, struct sk_buff *skb, char *node);
__be16 ipx_cksum(struct ipxhdr *packet, int length);
+int ipxrtr_add_route(__be32 network, struct ipx_interface *intrfc,
+ unsigned char *node);
+void ipxrtr_del_routes(struct ipx_interface *intrfc);
+int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
+ struct iovec *iov, size_t len, int noblock);
+int ipxrtr_route_skb(struct sk_buff *skb);
+struct ipx_route *ipxrtr_lookup(__be32 net);
+int ipxrtr_ioctl(unsigned int cmd, void __user *arg);
static __inline__ void ipxitf_put(struct ipx_interface *intrfc)
{
diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
index 994e28b..e5a00a9 100644
--- a/net/ipx/af_ipx.c
+++ b/net/ipx/af_ipx.c
@@ -84,15 +84,6 @@ DEFINE_SPINLOCK(ipx_interfaces_lock);
struct ipx_interface *ipx_primary_net;
struct ipx_interface *ipx_internal_net;
-extern int ipxrtr_add_route(__be32 network, struct ipx_interface *intrfc,
- unsigned char *node);
-extern void ipxrtr_del_routes(struct ipx_interface *intrfc);
-extern int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
- struct iovec *iov, size_t len, int noblock);
-extern int ipxrtr_route_skb(struct sk_buff *skb);
-extern struct ipx_route *ipxrtr_lookup(__be32 net);
-extern int ipxrtr_ioctl(unsigned int cmd, void __user *arg);
-
struct ipx_interface *ipx_interfaces_head(void)
{
struct ipx_interface *rc = NULL;
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH 01/13] net: Mark function as static in 9p/client.c
From: Josh Triplett @ 2014-02-08 20:04 UTC (permalink / raw)
To: Rashika Kheria
Cc: linux-kernel, Eric Van Hensbergen, Ron Minnich, Latchesar Ionkov,
David S. Miller, v9fs-developer, netdev
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
On Sun, Feb 09, 2014 at 01:17:21AM +0530, Rashika Kheria wrote:
> Mark function as static in net/9p/client.c because it is not used
> outside this file.
>
> This eliminates the following warning in net/9p/client.c:
> net/9p/client.c:207:18: warning: no previous prototype for ‘p9_fcall_alloc’ [-Wmissing-prototypes]
>
> Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> net/9p/client.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/9p/client.c b/net/9p/client.c
> index a5e4d2d..9186550 100644
> --- a/net/9p/client.c
> +++ b/net/9p/client.c
> @@ -204,7 +204,7 @@ free_and_return:
> return ret;
> }
>
> -struct p9_fcall *p9_fcall_alloc(int alloc_msize)
> +static struct p9_fcall *p9_fcall_alloc(int alloc_msize)
> {
> struct p9_fcall *fc;
> fc = kmalloc(sizeof(struct p9_fcall) + alloc_msize, GFP_NOFS);
> --
> 1.7.9.5
>
^ permalink raw reply
* Re: [PATCH 02/13] net: Include appropriate header file in caif/caif_dev.c
From: Josh Triplett @ 2014-02-08 20:04 UTC (permalink / raw)
To: Rashika Kheria; +Cc: linux-kernel, Dmitry Tarnyagin, David S. Miller, netdev
In-Reply-To: <30885a464918e0f7cbb55b5c521a048f3e369c27.1391888654.git.rashika.kheria@gmail.com>
On Sun, Feb 09, 2014 at 01:19:43AM +0530, Rashika Kheria wrote:
> Include appropriate header file net/caif/caif_dev.h in caif/caif_dev.c
> because it has prototype declarations of function defined in
> caif/caif_dev.c.
>
> This eliminates the following file in caif/caif_dev.c:
> net/caif/caif_dev.c:303:6: warning: no previous prototype for ‘caif_enroll_dev’ [-Wmissing-prototypes]
>
> Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> net/caif/caif_dev.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
> index 4dca159..edbca46 100644
> --- a/net/caif/caif_dev.c
> +++ b/net/caif/caif_dev.c
> @@ -22,6 +22,7 @@
> #include <net/pkt_sched.h>
> #include <net/caif/caif_device.h>
> #include <net/caif/caif_layer.h>
> +#include <net/caif/caif_dev.h>
> #include <net/caif/cfpkt.h>
> #include <net/caif/cfcnfg.h>
> #include <net/caif/cfserl.h>
> --
> 1.7.9.5
>
^ permalink raw reply
* Re: [PATCH 03/13] net: Include appropriate header file in caif/cfsrvl.c
From: Josh Triplett @ 2014-02-08 20:04 UTC (permalink / raw)
To: Rashika Kheria; +Cc: linux-kernel, Dmitry Tarnyagin, David S. Miller, netdev
In-Reply-To: <6b6ceef0f79bffec0ec14784dc3d921d53231a3b.1391888654.git.rashika.kheria@gmail.com>
On Sun, Feb 09, 2014 at 01:21:51AM +0530, Rashika Kheria wrote:
> Include appropriate header file net/caif/caif_dev.h in caif/cfsrvl.c
> because it has prototype declaration of functions defined in
> caif/cfsrvl.c.
>
> This eliminates the following warning in caif/cfsrvl.c:
> net/caif/cfsrvl.c:198:6: warning: no previous prototype for ‘caif_free_client’ [-Wmissing-prototypes]
> net/caif/cfsrvl.c:208:6: warning: no previous prototype for ‘caif_client_register_refcnt’ [-Wmissing-prototypes]
>
> Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> net/caif/cfsrvl.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/caif/cfsrvl.c b/net/caif/cfsrvl.c
> index 353f793..a6e1154 100644
> --- a/net/caif/cfsrvl.c
> +++ b/net/caif/cfsrvl.c
> @@ -15,6 +15,7 @@
> #include <net/caif/caif_layer.h>
> #include <net/caif/cfsrvl.h>
> #include <net/caif/cfpkt.h>
> +#include <net/caif/caif_dev.h>
>
> #define SRVL_CTRL_PKT_SIZE 1
> #define SRVL_FLOW_OFF 0x81
> --
> 1.7.9.5
>
^ permalink raw reply
* [PATCH 10/13] net: Move prototype declaration to header file include/net/datalink.h from net/ipx/af_ipx.c
From: Rashika Kheria @ 2014-02-08 20:05 UTC (permalink / raw)
To: linux-kernel; +Cc: David S. Miller, Arnaldo Carvalho de Melo, netdev, josh
In-Reply-To: <6f029c895035908595957fb16ab445c82793c77d.1391888654.git.rashika.kheria@gmail.com>
Move prototype declarations of function to header file
include/net/datalink.h from net/ipx/af_ipx.c because they are used by
more than one file.
This eliminates the following warning in net/ipx/pe2.c:
net/ipx/pe2.c:20:24: warning: no previous prototype for ‘make_EII_client’ [-Wmissing-prototypes]
net/ipx/pe2.c:32:6: warning: no previous prototype for ‘destroy_EII_client’ [-Wmissing-prototypes]
Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---
include/net/datalink.h | 2 ++
net/ipx/af_ipx.c | 4 +---
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/net/datalink.h b/include/net/datalink.h
index deb7ca7..93cb18f 100644
--- a/include/net/datalink.h
+++ b/include/net/datalink.h
@@ -15,4 +15,6 @@ struct datalink_proto {
struct list_head node;
};
+struct datalink_proto *make_EII_client(void);
+void destroy_EII_client(struct datalink_proto *dl);
#endif
diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
index e5a00a9..224d058 100644
--- a/net/ipx/af_ipx.c
+++ b/net/ipx/af_ipx.c
@@ -52,6 +52,7 @@
#include <net/p8022.h>
#include <net/psnap.h>
#include <net/sock.h>
+#include <net/datalink.h>
#include <net/tcp_states.h>
#include <asm/uaccess.h>
@@ -1977,9 +1978,6 @@ static struct notifier_block ipx_dev_notifier = {
.notifier_call = ipxitf_device_event,
};
-extern struct datalink_proto *make_EII_client(void);
-extern void destroy_EII_client(struct datalink_proto *);
-
static const unsigned char ipx_8022_type = 0xE0;
static const unsigned char ipx_snap_id[5] = { 0x0, 0x0, 0x0, 0x81, 0x37 };
static const char ipx_EII_err_msg[] __initconst =
--
1.7.9.5
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox