From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Greg Rose <gregory.v.rose@intel.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [ 15/82] rtnetlink: Fix problem with buffer allocation
Date: Wed, 14 Nov 2012 05:39:48 +0000 [thread overview]
Message-ID: <20121114053935.948224367@decadent.org.uk> (raw)
In-Reply-To: <20121114053933.726869752@decadent.org.uk>
3.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Greg Rose <gregory.v.rose@intel.com>
commit 115c9b81928360d769a76c632bae62d15206a94a upstream.
Implement a new netlink attribute type IFLA_EXT_MASK. The mask
is a 32 bit value that can be used to indicate to the kernel that
certain extended ifinfo values are requested by the user application.
At this time the only mask value defined is RTEXT_FILTER_VF to
indicate that the user wants the ifinfo dump to send information
about the VFs belonging to the interface.
This patch fixes a bug in which certain applications do not have
large enough buffers to accommodate the extra information returned
by the kernel with large numbers of SR-IOV virtual functions.
Those applications will not send the new netlink attribute with
the interface info dump request netlink messages so they will
not get unexpectedly large request buffers returned by the kernel.
Modifies the rtnl_calcit function to traverse the list of net
devices and compute the minimum buffer size that can hold the
info dumps of all matching devices based upon the filter passed
in via the new netlink attribute filter mask. If no filter
mask is sent then the buffer allocation defaults to NLMSG_GOODSIZE.
With this change it is possible to add yet to be defined netlink
attributes to the dump request which should make it fairly extensible
in the future.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.2: drop the change in do_setlink() that reverts
commit f18da14565819ba43b8321237e2426a2914cc2ef, which we never applied]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
include/linux/if_link.h | 1 +
include/linux/rtnetlink.h | 3 ++
include/net/rtnetlink.h | 2 +-
net/core/rtnetlink.c | 78 +++++++++++++++++++++++++++++++++------------
4 files changed, 62 insertions(+), 22 deletions(-)
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index c52d4b5..4b24ff4 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -137,6 +137,7 @@ enum {
IFLA_AF_SPEC,
IFLA_GROUP, /* Group the device belongs to */
IFLA_NET_NS_FD,
+ IFLA_EXT_MASK, /* Extended info mask, VFs, etc */
__IFLA_MAX
};
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index 8e872ea..577592e 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -602,6 +602,9 @@ struct tcamsg {
#define TCA_ACT_TAB 1 /* attr type must be >=1 */
#define TCAA_MAX 1
+/* New extended info filters for IFLA_EXT_MASK */
+#define RTEXT_FILTER_VF (1 << 0)
+
/* End of information exported to user level */
#ifdef __KERNEL__
diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
index 678f1ff..3702939 100644
--- a/include/net/rtnetlink.h
+++ b/include/net/rtnetlink.h
@@ -6,7 +6,7 @@
typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *, void *);
typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
-typedef u16 (*rtnl_calcit_func)(struct sk_buff *);
+typedef u16 (*rtnl_calcit_func)(struct sk_buff *, struct nlmsghdr *);
extern int __rtnl_register(int protocol, int msgtype,
rtnl_doit_func, rtnl_dumpit_func,
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 65aebd4..606a6e8 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -60,7 +60,6 @@ struct rtnl_link {
};
static DEFINE_MUTEX(rtnl_mutex);
-static u16 min_ifinfo_dump_size;
void rtnl_lock(void)
{
@@ -724,10 +723,11 @@ static void copy_rtnl_link_stats64(void *v, const struct rtnl_link_stats64 *b)
}
/* All VF info */
-static inline int rtnl_vfinfo_size(const struct net_device *dev)
+static inline int rtnl_vfinfo_size(const struct net_device *dev,
+ u32 ext_filter_mask)
{
- if (dev->dev.parent && dev_is_pci(dev->dev.parent)) {
-
+ if (dev->dev.parent && dev_is_pci(dev->dev.parent) &&
+ (ext_filter_mask & RTEXT_FILTER_VF)) {
int num_vfs = dev_num_vf(dev->dev.parent);
size_t size = nla_total_size(sizeof(struct nlattr));
size += nla_total_size(num_vfs * sizeof(struct nlattr));
@@ -766,7 +766,8 @@ static size_t rtnl_port_size(const struct net_device *dev)
return port_self_size;
}
-static noinline size_t if_nlmsg_size(const struct net_device *dev)
+static noinline size_t if_nlmsg_size(const struct net_device *dev,
+ u32 ext_filter_mask)
{
return NLMSG_ALIGN(sizeof(struct ifinfomsg))
+ nla_total_size(IFNAMSIZ) /* IFLA_IFNAME */
@@ -784,8 +785,9 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev)
+ nla_total_size(4) /* IFLA_MASTER */
+ nla_total_size(1) /* IFLA_OPERSTATE */
+ nla_total_size(1) /* IFLA_LINKMODE */
- + nla_total_size(4) /* IFLA_NUM_VF */
- + rtnl_vfinfo_size(dev) /* IFLA_VFINFO_LIST */
+ + nla_total_size(ext_filter_mask
+ & RTEXT_FILTER_VF ? 4 : 0) /* IFLA_NUM_VF */
+ + rtnl_vfinfo_size(dev, ext_filter_mask) /* IFLA_VFINFO_LIST */
+ rtnl_port_size(dev) /* IFLA_VF_PORTS + IFLA_PORT_SELF */
+ rtnl_link_get_size(dev) /* IFLA_LINKINFO */
+ rtnl_link_get_af_size(dev); /* IFLA_AF_SPEC */
@@ -868,7 +870,7 @@ static int rtnl_port_fill(struct sk_buff *skb, struct net_device *dev)
static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
int type, u32 pid, u32 seq, u32 change,
- unsigned int flags)
+ unsigned int flags, u32 ext_filter_mask)
{
struct ifinfomsg *ifm;
struct nlmsghdr *nlh;
@@ -941,10 +943,11 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
goto nla_put_failure;
copy_rtnl_link_stats64(nla_data(attr), stats);
- if (dev->dev.parent)
+ if (dev->dev.parent && (ext_filter_mask & RTEXT_FILTER_VF))
NLA_PUT_U32(skb, IFLA_NUM_VF, dev_num_vf(dev->dev.parent));
- if (dev->netdev_ops->ndo_get_vf_config && dev->dev.parent) {
+ if (dev->netdev_ops->ndo_get_vf_config && dev->dev.parent
+ && (ext_filter_mask & RTEXT_FILTER_VF)) {
int i;
struct nlattr *vfinfo, *vf;
@@ -1048,6 +1051,8 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
struct net_device *dev;
struct hlist_head *head;
struct hlist_node *node;
+ struct nlattr *tb[IFLA_MAX+1];
+ u32 ext_filter_mask = 0;
s_h = cb->args[0];
s_idx = cb->args[1];
@@ -1055,6 +1060,12 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
rcu_read_lock();
cb->seq = net->dev_base_seq;
+ nlmsg_parse(cb->nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX,
+ ifla_policy);
+
+ if (tb[IFLA_EXT_MASK])
+ ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]);
+
for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
idx = 0;
head = &net->dev_index_head[h];
@@ -1064,7 +1075,8 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
if (rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
NETLINK_CB(cb->skb).pid,
cb->nlh->nlmsg_seq, 0,
- NLM_F_MULTI) <= 0)
+ NLM_F_MULTI,
+ ext_filter_mask) <= 0)
goto out;
nl_dump_check_consistent(cb, nlmsg_hdr(skb));
@@ -1100,6 +1112,7 @@ const struct nla_policy ifla_policy[IFLA_MAX+1] = {
[IFLA_VF_PORTS] = { .type = NLA_NESTED },
[IFLA_PORT_SELF] = { .type = NLA_NESTED },
[IFLA_AF_SPEC] = { .type = NLA_NESTED },
+ [IFLA_EXT_MASK] = { .type = NLA_U32 },
};
EXPORT_SYMBOL(ifla_policy);
@@ -1842,6 +1853,7 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
struct net_device *dev = NULL;
struct sk_buff *nskb;
int err;
+ u32 ext_filter_mask = 0;
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
if (err < 0)
@@ -1850,6 +1862,9 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
if (tb[IFLA_IFNAME])
nla_strlcpy(ifname, tb[IFLA_IFNAME], IFNAMSIZ);
+ if (tb[IFLA_EXT_MASK])
+ ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]);
+
ifm = nlmsg_data(nlh);
if (ifm->ifi_index > 0)
dev = __dev_get_by_index(net, ifm->ifi_index);
@@ -1861,12 +1876,12 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
if (dev == NULL)
return -ENODEV;
- nskb = nlmsg_new(if_nlmsg_size(dev), GFP_KERNEL);
+ nskb = nlmsg_new(if_nlmsg_size(dev, ext_filter_mask), GFP_KERNEL);
if (nskb == NULL)
return -ENOBUFS;
err = rtnl_fill_ifinfo(nskb, dev, RTM_NEWLINK, NETLINK_CB(skb).pid,
- nlh->nlmsg_seq, 0, 0);
+ nlh->nlmsg_seq, 0, 0, ext_filter_mask);
if (err < 0) {
/* -EMSGSIZE implies BUG in if_nlmsg_size */
WARN_ON(err == -EMSGSIZE);
@@ -1877,8 +1892,31 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
return err;
}
-static u16 rtnl_calcit(struct sk_buff *skb)
+static u16 rtnl_calcit(struct sk_buff *skb, struct nlmsghdr *nlh)
{
+ struct net *net = sock_net(skb->sk);
+ struct net_device *dev;
+ struct nlattr *tb[IFLA_MAX+1];
+ u32 ext_filter_mask = 0;
+ u16 min_ifinfo_dump_size = 0;
+
+ nlmsg_parse(nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, ifla_policy);
+
+ if (tb[IFLA_EXT_MASK])
+ ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]);
+
+ if (!ext_filter_mask)
+ return NLMSG_GOODSIZE;
+ /*
+ * traverse the list of net devices and compute the minimum
+ * buffer size based upon the filter mask.
+ */
+ list_for_each_entry(dev, &net->dev_base_head, dev_list) {
+ min_ifinfo_dump_size = max_t(u16, min_ifinfo_dump_size,
+ if_nlmsg_size(dev,
+ ext_filter_mask));
+ }
+
return min_ifinfo_dump_size;
}
@@ -1913,13 +1951,11 @@ void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change)
int err = -ENOBUFS;
size_t if_info_size;
- skb = nlmsg_new((if_info_size = if_nlmsg_size(dev)), GFP_KERNEL);
+ skb = nlmsg_new((if_info_size = if_nlmsg_size(dev, 0)), GFP_KERNEL);
if (skb == NULL)
goto errout;
- min_ifinfo_dump_size = max_t(u16, if_info_size, min_ifinfo_dump_size);
-
- err = rtnl_fill_ifinfo(skb, dev, type, 0, 0, change, 0);
+ err = rtnl_fill_ifinfo(skb, dev, type, 0, 0, change, 0, 0);
if (err < 0) {
/* -EMSGSIZE implies BUG in if_nlmsg_size() */
WARN_ON(err == -EMSGSIZE);
@@ -1977,7 +2013,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
return -EOPNOTSUPP;
calcit = rtnl_get_calcit(family, type);
if (calcit)
- min_dump_alloc = calcit(skb);
+ min_dump_alloc = calcit(skb, nlh);
__rtnl_unlock();
rtnl = net->rtnl;
next prev parent reply other threads:[~2012-11-14 5:50 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-14 5:39 [ 00/82] 3.2.34-stable review Ben Hutchings
2012-11-14 5:39 ` [ 01/82] Bluetooth: Always compile SCO and L2CAP in Bluetooth Core Ben Hutchings
2012-11-14 21:24 ` Gustavo Padovan
2012-11-14 21:30 ` David Miller
2012-11-14 21:38 ` Ben Hutchings
2012-11-15 20:04 ` Ben Hutchings
2012-11-15 20:13 ` David Miller
2012-11-15 21:04 ` Gustavo Padovan
2012-11-15 21:08 ` David Miller
2012-11-15 22:05 ` Joe Perches
2012-11-15 21:07 ` Gustavo Padovan
2012-11-16 2:08 ` Ben Hutchings
2012-11-14 5:39 ` [ 02/82] x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility Ben Hutchings
2012-11-14 5:39 ` [ 03/82] drm/nouveau: silence modesetting spam on pre-gf8 chipsets Ben Hutchings
2012-11-14 5:39 ` [ 04/82] drm/nouveau: fix suspend/resume when in headless mode Ben Hutchings
2012-11-14 5:39 ` [ 05/82] drm/nouveau: headless mode by default if pci class != vga display Ben Hutchings
2012-11-14 5:39 ` [ 06/82] nfsd: add get_uint for u32s Ben Hutchings
2012-11-14 5:39 ` [ 07/82] ALSA: PCM: Fix some races at disconnection Ben Hutchings
2012-11-14 5:39 ` [ 08/82] ALSA: usb-audio: Fix " Ben Hutchings
2012-11-14 5:39 ` [ 09/82] ALSA: usb-audio: Use rwsem for disconnect protection Ben Hutchings
2012-11-14 5:39 ` [ 10/82] ALSA: usb-audio: Fix races at disconnection in mixer_quirks.c Ben Hutchings
2012-11-14 5:39 ` [ 11/82] ALSA: Add a reference counter to card instance Ben Hutchings
2012-11-14 5:39 ` [ 12/82] ALSA: Avoid endless sleep after disconnect Ben Hutchings
2012-11-14 5:39 ` [ 13/82] drm/radeon: fix typo in evergreen_mc_resume() Ben Hutchings
2012-11-14 5:39 ` [ 14/82] USB: mos7840: remove unused variable Ben Hutchings
2012-11-14 5:39 ` Ben Hutchings [this message]
2012-11-14 5:39 ` [ 16/82] rtnetlink: fix rtnl_calcit() and rtnl_dump_ifinfo() Ben Hutchings
2012-11-14 5:39 ` [ 17/82] gpio-timberdale: fix a potential wrapping issue Ben Hutchings
2012-11-14 5:39 ` [ 18/82] cfg80211: fix antenna gain handling Ben Hutchings
2012-11-14 5:39 ` [ 19/82] drm/i915: fix overlay on i830M Ben Hutchings
2012-11-14 5:39 ` [ 20/82] drm/i915: fixup infoframe support for sdvo Ben Hutchings
2012-11-14 5:39 ` [ 21/82] drm/i915: clear the entire sdvo infoframe buffer Ben Hutchings
2012-11-14 5:39 ` [ 22/82] crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent data corruption Ben Hutchings
2012-11-14 5:39 ` [ 23/82] ARM: at91: at91sam9g10: fix SOC type detection Ben Hutchings
2012-11-14 5:39 ` [ 24/82] ARM: at91/i2c: change id to let i2c-gpio work Ben Hutchings
2012-11-14 5:39 ` [ 25/82] mac80211: Only process mesh config header on frames that RA_MATCH Ben Hutchings
2012-11-14 5:39 ` [ 26/82] mac80211: dont inspect Sequence Control field on control frames Ben Hutchings
2012-11-14 5:40 ` [ 27/82] gpiolib: Dont return -EPROBE_DEFER to sysfs, or for invalid gpios Ben Hutchings
2012-11-15 17:52 ` Herton Ronaldo Krzesinski
2012-11-15 20:06 ` Ben Hutchings
2012-11-14 5:40 ` [ 28/82] mac80211: fix SSID copy on IBSS JOIN Ben Hutchings
2012-11-14 5:40 ` [ 29/82] wireless: drop invalid mesh address extension frames Ben Hutchings
2012-11-14 5:40 ` [ 30/82] mac80211: check management frame header length Ben Hutchings
2012-11-14 5:40 ` [ 31/82] mac80211: verify that skb data is present Ben Hutchings
2012-11-14 5:40 ` [ 32/82] mac80211: make sure data is accessible in EAPOL check Ben Hutchings
2012-11-14 5:40 ` [ 33/82] ath9k: fix stale pointers potentially causing access to freed skbs Ben Hutchings
2012-11-14 5:40 ` [ 34/82] floppy: do put_disk on current dr if blk_init_queue fails Ben Hutchings
2012-11-14 5:40 ` [ 35/82] floppy: properly handle failure on add_disk loop Ben Hutchings
2012-11-14 5:40 ` [ 36/82] xen/gntdev: dont leak memory from IOCTL_GNTDEV_MAP_GRANT_REF Ben Hutchings
2012-11-14 5:40 ` [ 37/82] rt2800: validate step value for temperature compensation Ben Hutchings
2012-11-14 5:40 ` [ 38/82] ath9k: Test for TID only in BlockAcks while checking tx status Ben Hutchings
2012-11-14 5:40 ` [ 39/82] module: fix out-by-one error in kallsyms Ben Hutchings
2012-11-14 5:40 ` [ 40/82] Input: tsc40 - remove wrong announcement of pressure support Ben Hutchings
2012-11-14 5:40 ` [ 41/82] HID: microsoft: fix invalid rdesc for 3k kbd Ben Hutchings
2012-11-14 5:40 ` [ 42/82] xen/mmu: Use Xen specific TLB flush instead of the generic one Ben Hutchings
2012-11-14 5:40 ` [ 43/82] NFS: Wait for session recovery to finish before returning Ben Hutchings
2012-11-14 5:40 ` [ 44/82] NFSv4.1: We must release the sequence id when we fail to get a session slot Ben Hutchings
2012-11-14 5:40 ` [ 45/82] NFSv4: nfs4_locku_done must release the sequence id Ben Hutchings
2012-11-14 5:40 ` [ 46/82] NFS: fix bug in legacy DNS resolver Ben Hutchings
2012-11-14 5:40 ` [ 47/82] nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd timeouts Ben Hutchings
2012-11-14 5:40 ` [ 48/82] nfs: Show original device name verbatim in /proc/*/mount{s,info} Ben Hutchings
2012-11-14 5:40 ` [ 49/82] target: Dont return success from module_init() if setup fails Ben Hutchings
2012-11-14 5:40 ` [ 50/82] target: Avoid integer overflow in se_dev_align_max_sectors() Ben Hutchings
2012-11-14 5:40 ` [ 51/82] iscsi-target: Fix missed wakeup race in TX thread Ben Hutchings
2012-11-14 5:40 ` [ 52/82] DRM/Radeon: Fix Load Detection on legacy primary DAC Ben Hutchings
2012-11-14 5:40 ` [ 53/82] cifs: fix potential buffer overrun in cifs.idmap handling code Ben Hutchings
2012-11-14 5:40 ` [ 54/82] ALSA: hda: Cirrus: Fix coefficient index for beep configuration Ben Hutchings
2012-11-14 5:40 ` [ 55/82] ALSA: HDA: Fix digital microphone on CS420x Ben Hutchings
2012-11-14 5:40 ` [ 56/82] ALSA: hda - Force to reset IEC958 status bits for AD codecs Ben Hutchings
2012-11-14 5:40 ` [ 57/82] hwmon: (w83627ehf) Force initial bank selection Ben Hutchings
2012-11-14 5:40 ` [ 58/82] drm: restore open_count if drm_setup fails Ben Hutchings
2012-11-14 5:40 ` [ 59/82] ALSA: hda - Fix empty DAC filling in patch_via.c Ben Hutchings
2012-11-14 5:40 ` [ 60/82] ALSA: hda - Fix invalid connections in VT1802 codec Ben Hutchings
2012-11-14 5:40 ` [ 61/82] ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) Ben Hutchings
2012-11-14 5:40 ` [ 62/82] ALSA: Fix card refcount unbalance Ben Hutchings
2012-11-14 5:40 ` [ 63/82] xfs: fix reading of wrapped log data Ben Hutchings
2012-11-14 5:40 ` [ 64/82] fanotify: fix missing break Ben Hutchings
2012-11-14 5:40 ` [ 65/82] mm: bugfix: set current->reclaim_state to NULL while returning from kswapd() Ben Hutchings
2012-11-14 5:40 ` [ 66/82] drm/vmwgfx: Fix hibernation device reset Ben Hutchings
2012-11-14 5:40 ` [ 67/82] drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR memory Ben Hutchings
2012-11-14 5:40 ` [ 68/82] sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() Ben Hutchings
2012-11-14 5:40 ` [ 69/82] netlink: use kfree_rcu() in netlink_release() Ben Hutchings
2012-11-14 5:40 ` [ 70/82] tcp: fix FIONREAD/SIOCINQ Ben Hutchings
2012-11-14 5:40 ` [ 71/82] ipv6: Set default hoplimit as zero Ben Hutchings
2012-11-14 5:40 ` [ 72/82] net: usb: Fix memory leak on Tx data path Ben Hutchings
2012-11-14 5:40 ` [ 73/82] net: fix divide by zero in tcp algorithm illinois Ben Hutchings
2012-11-14 5:40 ` [ 74/82] l2tp: fix oops in l2tp_eth_create() error path Ben Hutchings
2012-11-14 5:40 ` [ 75/82] af-packet: fix oops when socket is not present Ben Hutchings
2012-11-14 5:40 ` [ 76/82] ipv6: send unsolicited neighbour advertisements to all-nodes Ben Hutchings
2012-11-14 5:40 ` [ 77/82] eCryptfs: Copy up POSIX ACL and read-only flags from lower mount Ben Hutchings
2012-11-14 5:40 ` [ 78/82] eCryptfs: check for eCryptfs cipher support at mount Ben Hutchings
2012-11-14 5:40 ` [ 79/82] r8169: allow multicast packets on sub-8168f chipset Ben Hutchings
2012-11-14 5:40 ` [ 80/82] r8169: Fix WoL on RTL8168d/8111d Ben Hutchings
2012-11-14 5:40 ` [ 81/82] r8169: use unlimited DMA burst for TX Ben Hutchings
2012-11-14 5:40 ` [ 82/82] sky2: Fix for interrupt handler Ben Hutchings
2012-11-14 6:13 ` [ 00/82] 3.2.34-stable review Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121114053935.948224367@decadent.org.uk \
--to=ben@decadent.org.uk \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=davem@davemloft.net \
--cc=gregory.v.rose@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.