/********************************************************************* * * Filename: irproc.c * Version: 1.0 * Description: Various entries in the /proc file system * Status: Experimental. * Author: Thomas Davis, * Created at: Sat Feb 21 21:33:24 1998 * Modified at: Sun Nov 14 08:54:54 1999 * Modified by: Dag Brattli * * Copyright (c) 1998-1999, Dag Brattli * Copyright (c) 1998, Thomas Davis, , * All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * I, Thomas Davis, provide no warranty for any of this software. * This material is provided "AS-IS" and at no charge. * ********************************************************************/ #include #include #include #include #include #include #include #include extern const struct file_operations discovery_seq_fops; extern const struct file_operations irlap_seq_fops; extern const struct file_operations irlmp_seq_fops; extern const struct file_operations irttp_seq_fops; extern const struct file_operations irias_seq_fops; struct irda_entry { const char *name; const struct file_operations *fops; }; struct proc_dir_entry *proc_irda; EXPORT_SYMBOL(proc_irda); static const struct irda_entry irda_dirs[] = { {"discovery", &discovery_seq_fops}, {"irttp", &irttp_seq_fops}, {"irlmp", &irlmp_seq_fops}, {"irlap", &irlap_seq_fops}, {"irias", &irias_seq_fops}, }; /* * Function irda_proc_register (void) * * Register irda entry in /proc file system * */ void __init irda_proc_register(void) { int i; proc_irda = proc_mkdir("irda", init_net.proc_net); if (proc_irda == NULL) return; for (i = 0; i < ARRAY_SIZE(irda_dirs); i++) (void) proc_create(irda_dirs[i].name, 0, proc_irda, irda_dirs[i].fops); } /* * Function irda_proc_unregister (void) * * Unregister irda entry in /proc file system * */ void irda_proc_unregister(void) { int i; if (proc_irda) { for (i=0; ilog msg
diff options
context:
space:
mode:
authorDexuan Cui <decui@microsoft.com>2017-01-28 11:46:02 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-31 10:59:48 +0100
commit433e19cf33d34bb6751c874a9c00980552fe508c (patch)
treece6547ef2987fbb289fa28f03536328a42781651 /net/core/hwbm.c
parent191e885a2e130e639bb0c8ee350d7047294f2ce6 (diff)
Drivers: hv: vmbus: finally fix hv_need_to_signal_on_read()
Commit a389fcfd2cb5 ("Drivers: hv: vmbus: Fix signaling logic in hv_need_to_signal_on_read()") added the proper mb(), but removed the test "prev_write_sz < pending_sz" when making the signal decision. As a result, the guest can signal the host unnecessarily, and then the host can throttle the guest because the host thinks the guest is buggy or malicious; finally the user running stress test can perceive intermittent freeze of the guest. This patch brings back the test, and properly handles the in-place consumption APIs used by NetVSC (see get_next_pkt_raw(), put_pkt_raw() and commit_rd_index()). Fixes: a389fcfd2cb5 ("Drivers: hv: vmbus: Fix signaling logic in hv_need_to_signal_on_read()") Signed-off-by: Dexuan Cui <decui@microsoft.com> Reported-by: Rolf Neugebauer <rolf.neugebauer@docker.com> Tested-by: Rolf Neugebauer <rolf.neugebauer@docker.com> Cc: "K. Y. Srinivasan" <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: <stable@vger.kernel.org> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/core/hwbm.c')