3.10.51-stable review
Greg Kroah-Hartman
maintainercover 3.10.51-stable review
This is the start of the stable review cycle for the 3.10.51 release. There are 21 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri Aug 1 01:48:18 UTC 2014. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.10.51-rc1.gz
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 3.10.51-rc1
Zoltan Kiss <[email protected]>
core, nfqueue, openvswitch: Orphan frags in skb_zerocopy and handle errors
Michael Brown <[email protected]>
x86/efi: Include a .bss section within the PE/COFF headers
Martin Schwidefsky <[email protected]>
s390/ptrace: fix PSW mask check
Linus Torvalds <[email protected]>
Fix gcc-4.9.0 miscompilation of load_balance() in scheduler
Naoya Horiguchi <[email protected]>
mm: hugetlb: fix copy_hugetlb_page_range()
Sven Wegener <[email protected]>
x86_32, entry: Store badsys error code in %eax
Guenter Roeck <[email protected]>
hwmon: (smsc47m192) Fix temperature limit and vrm write operations
John David Anglin <[email protected]>
parisc: Remove SA_RESTORER define
Silesh C V <[email protected]>
coredump: fix the setting of PF_DUMPCORE
Dmitry Torokhov <[email protected]>
Input: fix defuzzing logic
Mikulas Patocka <[email protected]>
slab_common: fix the check for duplicate slab names
Christoph Lameter <[email protected]>
slab_common: Do not check for duplicate slab names
Tony Luck <[email protected]>
tracing: Fix wraparound problems in "uptime" trace clock
Tejun Heo <[email protected]>
blkcg: don't call into policy draining if root_blkg is already gone
Romain Degez <[email protected]>
ahci: add support for the Promise FastTrak TX8660 SATA HBA (ahci mode)
Tejun Heo <[email protected]>
libata: introduce ata_host->n_tags to avoid oops on SAS controllers
Kevin Hao <[email protected]>
libata: support the ata host which implements a queue depth less than 32
Christoph Hellwig <[email protected]>
block: don't assume last put of shared tags is for the host
Mikulas Patocka <[email protected]>
block: provide compat ioctl for BLKZEROOUT
Antti Palosaari <[email protected]>
media: tda10071: force modulation to QPSK on DVB-S
Hans Verkuil <[email protected]>
media: hdpvr: fix two audio bugs
-------------
Diffstat:
Makefile | 6 ++++-- arch/parisc/include/uapi/asm/signal.h | 2 -- arch/s390/kernel/ptrace.c | 9 +++++++-- arch/x86/boot/header.S | 26 ++++++++++++++++++++---- arch/x86/boot/tools/build.c | 37 +++++++++++++++++++++++++++------- arch/x86/kernel/entry_32.S | 9 +++++---- block/blk-cgroup.c | 7 +++++++ block/blk-tag.c | 33 +++++++----------------------- block/compat_ioctl.c | 1 + drivers/ata/ahci.c | 1 + drivers/ata/libata-core.c | 12 +++++++++-- drivers/hwmon/smsc47m192.c | 4 +++- drivers/input/input.c | 6 ++++-- drivers/media/dvb-frontends/tda10071.c | 6 +++++- drivers/media/usb/hdpvr/hdpvr-video.c | 6 +++--- fs/coredump.c | 2 +- include/linux/libata.h | 1 + kernel/trace/trace.c | 2 +- kernel/trace/trace_clock.c | 9 +++++---- mm/hugetlb.c | 1 + mm/slab_common.c | 2 ++ net/netfilter/nfnetlink_queue_core.c | 29 ++++++++++++++++++-------- 22 files changed, 141 insertions(+), 70 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/21 media: hdpvr: fix two audio bugs
3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans Verkuil <[email protected]>
commit 3445857b22eafb70a6ac258979e955b116bfd2c6 upstream.
When the audio encoding is changed the driver calls hdpvr_set_audio with the current opt->audio_input value. However, that should have been opt->audio_input + 1. So changing the audio encoding inadvertently changes the input as well. This bug has always been there.
The second bug was introduced in kernel 3.10 and that broke the default_audio_input module option handling: the audio encoding was never switched to AC3 if default_audio_input was set to 2 (SPDIF input).
In addition, since starting with 3.10 the audio encoding is always set at the start the first bug now always happens when the driver is loaded. In the past this bug would only surface if the user would change the audio encoding after the driver was loaded.
Also fixes a small trivial typo (bufffer -> buffer).
--- drivers/media/usb/hdpvr/hdpvr-video.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/media/usb/hdpvr/hdpvr-video.c +3 -3
@@ -81,7 +81,7 @@ static void hdpvr_read_bulk_callback(str }/*=========================================================================*/ -/* bufffer bits */ +/* buffer bits */ /* function expects dev->io_mutex to be hold by caller */ int hdpvr_cancel_queue (struct hdpvr_device *dev)
@@ -921,7 +921,7 @@ static int hdpvr_s_ctrl(struct v4l2_ctrlcase V4L2_CID_MPEG_AUDIO_ENCODING :if (dev->flags &HDPVR_FLAG_AC3_CAP ) { opt->audio_codec = ctrl->val; -return hdpvr_set_audio (dev, opt->audio_input, +return hdpvr_set_audio (dev, opt->audio_input +1 , opt->audio_codec); }return 0 ;
@@ -1191,7 +1191,7 @@ int hdpvr_register_videodev(struct hdpvrv4l2_ctrl_new_std_menu (hdl, &hdpvr_ctrl_ops,V4L2_CID_MPEG_AUDIO_ENCODING , ac3 ?V4L2_MPEG_AUDIO_ENCODING_AC3 :V4L2_MPEG_AUDIO_ENCODING_AAC , -0x7 ,V4L2_MPEG_AUDIO_ENCODING_AAC ); +0x7 , ac3 ? dev->options.audio_codec :V4L2_MPEG_AUDIO_ENCODING_AAC ); v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops, V4L2_CID_MPEG_VIDEO_ENCODING, V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3,
Greg Kroah-Hartman
maintainerPATCH 2/21 media: tda10071: force modulation to QPSK on DVB-S
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Antti Palosaari <[email protected]>
commit db4175ae2095634dbecd4c847da439f9c83e1b3b upstream.
Only supported modulation for DVB-S is QPSK. Modulation parameter contains invalid value for DVB-S on some cases, which leads driver refusing tuning attempt. Due to that, hard code modulation to QPSK in case of DVB-S.
--- drivers/media/dvb-frontends/tda10071.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/media/dvb-frontends/tda10071.c +5 -1
@@ -667,6 +667,7 @@ static int tda10071_set_frontend(structstruct dtv_frontend_properties *c = &fe->dtv_property_cache;int ret, i;u8 mode, rolloff, pilot, inversion, div; +fe_modulation_t modulation;dev_dbg (&priv->i2c->dev,"%s: delivery_system=%d modulation=%d " \ "frequency=%d symbol_rate=%d inversion=%d pilot=%d " \
@@ -701,10 +702,13 @@ static int tda10071_set_frontend(structswitch (c->delivery_system) {case SYS_DVBS : + modulation =QPSK ; rolloff =0 ; pilot =2 ;break ;case SYS_DVBS2 : + modulation = c->modulation; +switch (c->rolloff) {case ROLLOFF_20 : rolloff =2 ;
@@ -749,7 +753,7 @@ static int tda10071_set_frontend(structfor (i =0 , mode =0xff ; i <ARRAY_SIZE (TDA10071_MODCOD ); i++) {if (c->delivery_system ==TDA10071_MODCOD [i].delivery_system && - c->modulation ==TDA10071_MODCOD [i].modulation && + modulation ==TDA10071_MODCOD [i].modulation && c->fec_inner ==TDA10071_MODCOD [i].fec) { mode =TDA10071_MODCOD [i].val; dev_dbg(&priv->i2c->dev, "%s: mode found=%02x\n",
Greg Kroah-Hartman
maintainerPATCH 3/21 block: provide compat ioctl for BLKZEROOUT
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikulas Patocka <[email protected]>
commit 3b3a1814d1703027f9867d0f5cbbfaf6c7482474 upstream.
This patch provides the compat BLKZEROOUT ioctl. The argument is a pointer to two uint64_t values, so there is no need to translate it.
--- block/compat_ioctl.c | 1 + 1 file changed, 1 insertion(+)
block/compat_ioctl.c +1 -0
@@ -689,6 +689,7 @@ long compat_blkdev_ioctl(struct file *ficase BLKROSET :case BLKDISCARD :case BLKSECDISCARD : +case BLKZEROOUT :/* * the ones below are implemented in blkdev_locked_ioctl, * but we call blkdev_ioctl, which gets the lock for us
Greg Kroah-Hartman
maintainerPATCH 4/21 block: dont assume last put of shared tags is for the host
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <[email protected]>
commit d45b3279a5a2252cafcd665bbf2db8c9b31ef783 upstream.
There is no inherent reason why the last put of a tag structure must be the one for the Scsi_Host, as device model objects can be held for arbitrary periods. Merge blk_free_tags and __blk_free_tags into a single funtion that just release a references and get rid of the BUG() when the host reference wasn't the last.
--- block/blk-tag.c | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-)
block/blk-tag.c +7 -26
@@ -27,18 +27,15 @@ struct request *blk_queue_find_tag(strucEXPORT_SYMBOL (blk_queue_find_tag);/** -* __blk_free_tags - release a given set of tag maintenance info +* blk_free_tags - release a given set of tag maintenance info * @bqt: the tag map to free * -* Tries to free the specified @bqt. Returns true if it was -* actually freed and false if there are still references using it +* Drop the reference count on @bqt and frees it when the last reference +* is dropped. */ -static int __blk_free_tags (struct blk_queue_tag *bqt) +void blk_free_tags (struct blk_queue_tag *bqt) { -int retval; - - retval =atomic_dec_and_test (&bqt->refcnt); -if (retval) { +if (atomic_dec_and_test (&bqt->refcnt)) {BUG_ON (find_first_bit (bqt->tag_map, bqt->max_depth) < bqt->max_depth);
@@ -50,9 +47,8 @@ static int __blk_free_tags(struct blk_qukfree (bqt); } - -return retval; } +EXPORT_SYMBOL (blk_free_tags);/** * __blk_queue_free_tags - release tag maintenance info
@@ -69,28 +65,13 @@ void __blk_queue_free_tags(struct requesif (!bqt)return ; -__blk_free_tags (bqt); +blk_free_tags (bqt); q->queue_tags =NULL ;queue_flag_clear_unlocked (QUEUE_FLAG_QUEUED , q); }/** -* blk_free_tags - release a given set of tag maintenance info -* @bqt: the tag map to free -* -* For externally managed @bqt frees the map. Callers of this -* function must guarantee to have released all the queues that -* might have been using this tag map. -*/ -void blk_free_tags (struct blk_queue_tag *bqt) -{ -if (unlikely (!__blk_free_tags (bqt))) -BUG (); -} -EXPORT_SYMBOL (blk_free_tags); - -/** * blk_queue_free_tags - release tag maintenance info * @q: the request queue for the device *
Greg Kroah-Hartman
maintainerPATCH 5/21 libata: support the ata host which implements a queue depth less than 32
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kevin Hao <[email protected]>
commit 1871ee134b73fb4cadab75752a7152ed2813c751 upstream.
The sata on fsl mpc8315e is broken after the commit 8a4aeec8d2d6 ("libata/ahci: accommodate tag ordered controllers"). The reason is that the ata controller on this SoC only implement a queue depth of
16. When issuing the commands in tag order, all the commands in tag 16 ~ 31 are mapped to tag 0 unconditionally and then causes the sata malfunction. It makes no senses to use a 32 queue in software while the hardware has less queue depth. So consider the queue depth implemented by the hardware when requesting a command tag.
--- drivers/ata/libata-core.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-)
drivers/ata/libata-core.c +19 -3
@@ -4758,6 +4758,10 @@ void swap_buf_le16(u16 *buf, unsigned in* ata_qc_new - Request an available ATA command, for queueing * @ap: target port * +* Some ATA host controllers may implement a queue depth which is less +* than ATA_MAX_QUEUE. So we shouldn't allocate a tag which is beyond +* the hardware limitation. +* * LOCKING: * None. */
@@ -4765,14 +4769,16 @@ void swap_buf_le16(u16 *buf, unsigned instatic struct ata_queued_cmd *ata_qc_new (struct ata_port *ap) {struct ata_queued_cmd *qc =NULL ; -unsigned int i, tag; +unsigned int i, tag, max_queue; + + max_queue = ap->scsi_host->can_queue;/* no command while frozen */ if (unlikely (ap->pflags &ATA_PFLAG_FROZEN ))return NULL ; -for (i =0 ; i <ATA_MAX_QUEUE ; i++) { - tag = (i + ap->last_tag +1 ) %ATA_MAX_QUEUE ; +for (i =0 , tag = ap->last_tag +1 ; i < max_queue; i++, tag++) { + tag = tag < max_queue ? tag :0 ;/* the last tag is reserved for internal command. */ if (tag ==ATA_TAG_INTERNAL )
@@ -6154,6 +6160,16 @@ int ata_host_register(struct ata_host *h {int i, rc; +/* +* The max queue supported by hardware must not be greater than +* ATA_MAX_QUEUE. +*/ +if (sht->can_queue >ATA_MAX_QUEUE ) { +dev_err (host->dev,"BUG: the hardware max queue is too large\n" ); +WARN_ON (1 ); +return -EINVAL ; + } +/* host must have been started */ if (!(host->flags &ATA_HOST_STARTED )) {dev_err (host->dev,"BUG: trying to register unstarted host\n" );
Greg Kroah-Hartman
maintainerPATCH 6/21 libata: introduce ata_host->n_tags to avoid oops on SAS controllers
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
commit 1a112d10f03e83fb3a2fdc4c9165865dec8a3ca6 upstream.
1871ee134b73 ("libata: support the ata host which implements a queue depth less than 32") directly used ata_port->scsi_host->can_queue from ata_qc_new() to determine the number of tags supported by the host; unfortunately, SAS controllers doing SATA don't initialize ->scsi_host leading to the following oops.
BUG: unable to handle kernel NULL pointer dereference at 0000000000000058 IP: [<ffffffff814e0618>] ata_qc_new_init+0x188/0x1b0 PGD 0 Oops: 0002 [#1] SMP Modules linked in: isci libsas scsi_transport_sas mgag200 drm_kms_helper ttm CPU: 1 PID: 518 Comm: udevd Not tainted 3.16.0-rc6+ #62 Hardware name: Intel Corporation S2600CO/S2600CO, BIOS SE5C600.86B.02.02.0002.122320131210 12/23/2013 task: ffff880c1a00b280 ti: ffff88061a000000 task.ti: ffff88061a000000 RIP: 0010:[<ffffffff814e0618>] [<ffffffff814e0618>] ata_qc_new_init+0x188/0x1b0 RSP: 0018:ffff88061a003ae8 EFLAGS: 00010012 RAX: 0000000000000001 RBX: ffff88000241ca80 RCX: 00000000000000fa RDX: 0000000000000020 RSI: 0000000000000020 RDI: ffff8806194aa298 RBP: ffff88061a003ae8 R08: ffff8806194a8000 R09: 0000000000000000 R10: 0000000000000000 R11: ffff88000241ca80 R12: ffff88061ad58200 R13: ffff8806194aa298 R14: ffffffff814e67a0 R15: ffff8806194a8000 FS: 00007f3ad7fe3840(0000) GS:ffff880627620000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000058 CR3: 000000061a118000 CR4: 00000000001407e0 Stack: ffff88061a003b20 ffffffff814e96e1 ffff88000241ca80 ffff88061ad58200 ffff8800b6bf6000 ffff880c1c988000 ffff880619903850 ffff88061a003b68 ffffffffa0056ce1 ffff88061a003b48 0000000013d6e6f8 ffff88000241ca80 Call Trace: [<ffffffff814e96e1>] ata_sas_queuecmd+0xa1/0x430 [<ffffffffa0056ce1>] sas_queuecommand+0x191/0x220 [libsas] [<ffffffff8149afee>] scsi_dispatch_cmd+0x10e/0x300 [<ffffffff814a3bc5>] scsi_request_fn+0x2f5/0x550 [<ffffffff81317613>] __blk_run_queue+0x33/0x40 [<ffffffff8131781a>] queue_unplugged+0x2a/0x90 [<ffffffff8131ceb4>] blk_flush_plug_list+0x1b4/0x210 [<ffffffff8131d274>] blk_finish_plug+0x14/0x50 [<ffffffff8117eaa8>] __do_page_cache_readahead+0x198/0x1f0 [<ffffffff8117ee21>] force_page_cache_readahead+0x31/0x50 [<ffffffff8117ee7e>] page_cache_sync_readahead+0x3e/0x50 [<ffffffff81172ac6>] generic_file_read_iter+0x496/0x5a0 [<ffffffff81219897>] blkdev_read_iter+0x37/0x40 [<ffffffff811e307e>] new_sync_read+0x7e/0xb0 [<ffffffff811e3734>] vfs_read+0x94/0x170 [<ffffffff811e43c6>] SyS_read+0x46/0xb0 [<ffffffff811e33d1>] ? SyS_lseek+0x91/0xb0 [<ffffffff8171ee29>] system_call_fastpath+0x16/0x1b Code: 00 00 00 88 50 29 83 7f 08 01 19 d2 83 e2 f0 83 ea 50 88 50 34 c6 81 1d 02 00 00 40 c6 81 17 02 00 00 00 5d c3 66 0f 1f 44 00 00 <89> 14 25 58 00 00 00
Fix it by introducing ata_host->n_tags which is initialized to ATA_MAX_QUEUE - 1 in ata_host_init() for SAS controllers and set to scsi_host_template->can_queue in ata_host_register() for !SAS ones. As SAS hosts are never registered, this will give them the same ATA_MAX_QUEUE - 1 as before. Note that we can't use scsi_host->can_queue directly for SAS hosts anyway as they can go higher than the libata maximum.
--- drivers/ata/libata-core.c | 16 ++++------------ include/linux/libata.h | 1 + 2 files changed, 5 insertions(+), 12 deletions(-)
drivers/ata/libata-core.c +4 -12
@@ -4769,9 +4769,8 @@ void swap_buf_le16(u16 *buf, unsigned instatic struct ata_queued_cmd *ata_qc_new (struct ata_port *ap) {struct ata_queued_cmd *qc =NULL ; -unsigned int i, tag, max_queue; - - max_queue = ap->scsi_host->can_queue; +unsigned int max_queue = ap->host->n_tags; +unsigned int i, tag;/* no command while frozen */ if (unlikely (ap->pflags &ATA_PFLAG_FROZEN ))
@@ -6079,6 +6078,7 @@ void ata_host_init(struct ata_host *host {spin_lock_init (&host->lock);mutex_init (&host->eh_mutex); + host->n_tags =ATA_MAX_QUEUE -1 ; host->dev = dev; host->ops = ops; }
@@ -6160,15 +6160,7 @@ int ata_host_register(struct ata_host *h {int i, rc; -/* -* The max queue supported by hardware must not be greater than -* ATA_MAX_QUEUE. -*/ -if (sht->can_queue >ATA_MAX_QUEUE ) { -dev_err (host->dev,"BUG: the hardware max queue is too large\n" ); -WARN_ON (1 ); -return -EINVAL ; - } + host->n_tags =clamp (sht->can_queue,1 ,ATA_MAX_QUEUE -1 );/* host must have been started */ if (!(host->flags &ATA_HOST_STARTED )) {
include/linux/libata.h +1 -0
@@ -547,6 +547,7 @@ struct ata_host {struct device *dev;void __iomem *const *iomap;unsigned int n_ports; +unsigned int n_tags;/* nr of NCQ tags */ void *private_data;struct ata_port_operations *ops;unsigned long flags;
Greg Kroah-Hartman
maintainerPATCH 7/21 ahci: add support for the Promise FastTrak TX8660 SATA HBA (ahci mode)
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Romain Degez <[email protected]>
commit b32bfc06aefab61acc872dec3222624e6cd867ed upstream.
Add support of the Promise FastTrak TX8660 SATA HBA in ahci mode by registering the board in the ahci_pci_tbl[].
Note: this HBA also provide a hardware RAID mode when activated in BIOS but specific drivers from the manufacturer are required in this case.
--- drivers/ata/ahci.c | 1 + 1 file changed, 1 insertion(+)
drivers/ata/ahci.c +1 -0
@@ -455,6 +455,7 @@ static const struct pci_device_id ahci_p/* Promise */ { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ + { PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode *//* Asmedia */ { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */
Greg Kroah-Hartman
maintainerPATCH 8/21 blkcg: dont call into policy draining if root_blkg is already gone
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
commit 0b462c89e31f7eb6789713437eb551833ee16ff3 upstream.
While a queue is being destroyed, all the blkgs are destroyed and its ->root_blkg pointer is set to NULL. If someone else starts to drain while the queue is in this state, the following oops happens.
NULL pointer dereference at 0000000000000028
IP: [<ffffffff8144e944>] blk_throtl_drain+0x84/0x230 PGD e4a1067 PUD b773067 PMD 0
Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC Modules linked in: cfq_iosched(-) [last unloaded: cfq_iosched] CPU: 1 PID: 537 Comm: bash Not tainted 3.16.0-rc3-work+ #2 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 task: ffff88000e222250 ti: ffff88000efd4000 task.ti: ffff88000efd4000 RIP: 0010:[<ffffffff8144e944>] [<ffffffff8144e944>] blk_throtl_drain+0x84/0x230 RSP: 0018:ffff88000efd7bf0 EFLAGS: 00010046 RAX: 0000000000000000 RBX: ffff880015091450 RCX: 0000000000000001 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffff88000efd7c10 R08: 0000000000000000 R09: 0000000000000001 R10: ffff88000e222250 R11: 0000000000000000 R12: ffff880015091450 R13: ffff880015092e00 R14: ffff880015091d70 R15: ffff88001508fc28 FS: 00007f1332650740(0000) GS:ffff88001fa80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 0000000000000028 CR3: 0000000009446000 CR4: 00000000000006e0 Stack: ffffffff8144e8f6 ffff880015091450 0000000000000000 ffff880015091d80 ffff88000efd7c28 ffffffff8144ae2f ffff880015091450 ffff88000efd7c58 ffffffff81427641 ffff880015091450 ffffffff82401f00 ffff880015091450 Call Trace: [<ffffffff8144ae2f>] blkcg_drain_queue+0x1f/0x60 [<ffffffff81427641>] __blk_drain_queue+0x71/0x180 [<ffffffff81429b3e>] blk_queue_bypass_start+0x6e/0xb0 [<ffffffff814498b8>] blkcg_deactivate_policy+0x38/0x120 [<ffffffff8144ec44>] blk_throtl_exit+0x34/0x50 [<ffffffff8144aea5>] blkcg_exit_queue+0x35/0x40 [<ffffffff8142d476>] blk_release_queue+0x26/0xd0 [<ffffffff81454968>] kobject_cleanup+0x38/0x70 [<ffffffff81454848>] kobject_put+0x28/0x60 [<ffffffff81427505>] blk_put_queue+0x15/0x20 [<ffffffff817d07bb>] scsi_device_dev_release_usercontext+0x16b/0x1c0 [<ffffffff810bc339>] execute_in_process_context+0x89/0xa0 [<ffffffff817d064c>] scsi_device_dev_release+0x1c/0x20 [<ffffffff817930e2>] device_release+0x32/0xa0 [<ffffffff81454968>] kobject_cleanup+0x38/0x70 [<ffffffff81454848>] kobject_put+0x28/0x60 [<ffffffff817934d7>] put_device+0x17/0x20 [<ffffffff817d11b9>] __scsi_remove_device+0xa9/0xe0 [<ffffffff817d121b>] scsi_remove_device+0x2b/0x40 [<ffffffff817d1257>] sdev_store_delete+0x27/0x30 [<ffffffff81792ca8>] dev_attr_store+0x18/0x30 [<ffffffff8126f75e>] sysfs_kf_write+0x3e/0x50 [<ffffffff8126ea87>] kernfs_fop_write+0xe7/0x170 [<ffffffff811f5e9f>] vfs_write+0xaf/0x1d0 [<ffffffff811f69bd>] SyS_write+0x4d/0xc0 [<ffffffff81d24692>] system_call_fastpath+0x16/0x1b
776687bce42b ("block, blk-mq: draining can't be skipped even if bypass_depth was non-zero") made it easier to trigger this bug by making blk_queue_bypass_start() drain even when it loses the first bypass test to blk_cleanup_queue(); however, the bug has always been there even before the commit as blk_queue_bypass_start() could race against queue destruction, win the initial bypass test but perform the actual draining after blk_cleanup_queue() already destroyed all blkgs.
Fix it by skippping calling into policy draining if all the blkgs are already gone.
--- block/blk-cgroup.c | 7 +++++++ 1 file changed, 7 insertions(+)
block/blk-cgroup.c +7 -0
@@ -876,6 +876,13 @@ void blkcg_drain_queue(struct request_qu {lockdep_assert_held (q->queue_lock); +/* +* @q could be exiting and already have destroyed all blkgs as +* indicated by NULL root_blkg. If so, don't confuse policies. +*/ +if (!q->root_blkg) +return ; +blk_throtl_drain (q); }
Greg Kroah-Hartman
maintainerPATCH 9/21 tracing: Fix wraparound problems in "uptime" trace clock
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Luck <[email protected]>
commit 58d4e21e50ff3cc57910a8abc20d7e14375d2f61 upstream.
The "uptime" trace clock added in:
commit 8aacf017b065a805d27467843490c976835eb4a5
tracing: Add "uptime" trace clock that uses jiffies
has wraparound problems when the system has been up more than 1 hour 11 minutes and 34 seconds. It converts jiffies to nanoseconds using:
(u64)jiffies_to_usecs(jiffy) * 1000ULL
but since jiffies_to_usecs() only returns a 32-bit value, it truncates at 2^32 microseconds. An additional problem on 32-bit systems is that the argument is "unsigned long", so fixing the return value only helps until 2^32 jiffies (49.7 days on a HZ=1000 system).
Avoid these problems by using jiffies_64 as our basis, and not converting to nanoseconds (we do convert to clock_t because user facing API must not be dependent on internal kernel HZ values).
--- kernel/trace/trace.c | 2 +- kernel/trace/trace_clock.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-)
kernel/trace/trace.c +1 -1
@@ -741,7 +741,7 @@ static struct { { trace_clock_local, "local", 1 }, { trace_clock_global, "global", 1 }, { trace_clock_counter, "counter", 0 }, - { trace_clock_jiffies, "uptime", 1 }, + { trace_clock_jiffies, "uptime", 0 }, { trace_clock, "perf", 1 },ARCH_TRACE_CLOCKS };
kernel/trace/trace_clock.c +5 -4
@@ -59,13 +59,14 @@ u64 notrace trace_clock(void)/* * trace_jiffy_clock(): Simply use jiffies as a clock counter. +* Note that this use of jiffies_64 is not completely safe on +* 32-bit systems. But the window is tiny, and the effect if +* we are affected is that we will have an obviously bogus +* timestamp on a trace event - i.e. not life threatening. */ u64 notrace trace_clock_jiffies(void) { -u64 jiffy = jiffies -INITIAL_JIFFIES ; - -/* Return nsecs */ -return (u64 )jiffies_to_usecs (jiffy) *1000ULL ; +return jiffies_64_to_clock_t (jiffies_64 -INITIAL_JIFFIES ); }/*
Greg Kroah-Hartman
maintainerPATCH 10/21 slab_common: Do not check for duplicate slab names
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Lameter <[email protected]>
commit 3e374919b314f20e2a04f641ebc1093d758f66a4 upstream.
SLUB can alias multiple slab kmem_create_requests to one slab cache to save memory and increase the cache hotness. As a result the name of the slab can be stale. Only check the name for duplicates if we are in debug mode where we do not merge multiple caches.
This fixes the following problem reported by Jonathan Brassow:
The problem with kmem_cache* is this:
*) Assume CONFIG_SLUB is set
1) kmem_cache_create(name="foo-a")
- creates new kmem_cache structure
2) kmem_cache_create(name="foo-b")
- If identical cache characteristics, it will be merged with the previously created cache associated with "foo-a". The cache's refcount will be incremented and an alias will be created via sysfs_slab_alias().
3) kmem_cache_destroy(<ptr>)
- Attempting to destroy cache associated with "foo-a", but instead the refcount is simply decremented. I don't even think the sysfs aliases are ever removed...
4) kmem_cache_create(name="foo-a")
- This FAILS because kmem_cache_sanity_check colides with the existing name ("foo-a") associated with the non-removed cache.
This is a problem for RAID (specifically dm-raid) because the name used for the kmem_cache_create is ("raid%d-%p", level, mddev). If the cache persists for long enough, the memory address of an old mddev will be reused for a new mddev - causing an identical formulation of the cache name. Even though kmem_cache_destory had long ago been used to delete the old cache, the merging of caches has cause the name and cache of that old instance to be preserved and causes a colision (and thus failure) in kmem_cache_create(). I see this regularly in my testing.
--- mm/slab_common.c | 2 ++ 1 file changed, 2 insertions(+)
mm/slab_common.c +2 -0
@@ -55,6 +55,7 @@ static int kmem_cache_sanity_check(struccontinue ; } +#if !defined(CONFIG_SLUB ) || !defined(CONFIG_SLUB_DEBUG_ON )/* * For simplicity, we won't check this in the list of memcg * caches. We have control over memcg naming, and if there
@@ -68,6 +69,7 @@ static int kmem_cache_sanity_check(struc s =NULL ;return -EINVAL ; } +#endif }WARN_ON (strchr (name,' ' ));/* It confuses parsers */
Greg Kroah-Hartman
maintainerPATCH 11/21 slab_common: fix the check for duplicate slab names
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikulas Patocka <[email protected]>
commit 694617474e33b8603fc76e090ed7d09376514b1a upstream.
The patch 3e374919b314f20e2a04f641ebc1093d758f66a4 is supposed to fix the problem where kmem_cache_create incorrectly reports duplicate cache name and fails. The problem is described in the header of that patch.
However, the patch doesn't really fix the problem because of these reasons:
* the logic to test for debugging is reversed. It was intended to perform the check only if slub debugging is enabled (which implies that caches with the same parameters are not merged). Therefore, there should be #if !defined(CONFIG_SLUB) || defined(CONFIG_SLUB_DEBUG_ON) The current code has the condition reversed and performs the test if debugging is disabled.
* slub debugging may be enabled or disabled based on kernel command line, CONFIG_SLUB_DEBUG_ON is just the default settings. Therefore the test based on definition of CONFIG_SLUB_DEBUG_ON is unreliable.
This patch fixes the problem by removing the test "!defined(CONFIG_SLUB_DEBUG_ON)". Therefore, duplicate names are never checked if the SLUB allocator is used.
Note to stable kernel maintainers: when backporint this patch, please backport also the patch 3e374919b314f20e2a04f641ebc1093d758f66a4.
--- mm/slab_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
mm/slab_common.c +1 -1
@@ -55,7 +55,7 @@ static int kmem_cache_sanity_check(struccontinue ; } -#if !defined(CONFIG_SLUB ) || !defined(CONFIG_SLUB_DEBUG_ON ) +#if !defined(CONFIG_SLUB )/* * For simplicity, we won't check this in the list of memcg * caches. We have control over memcg naming, and if there
Greg Kroah-Hartman
maintainerPATCH 12/21 Input: fix defuzzing logic
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Torokhov <[email protected]>
commit 50c5d36dab930b1f1b1e3348b8608aa8b9ee7610 upstream.
We attempt to remove noise from coordinates reported by devices in input_handle_abs_event(), unfortunately, unless we were dropping the event altogether, we were ignoring the adjusted value and were passing on the original value instead.
--- drivers/input/input.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/input/input.c +4 -2
@@ -257,9 +257,10 @@ static int input_handle_abs_event(struct }static int input_get_disposition (struct input_dev *dev, -unsigned int type,unsigned int code,int value) +unsigned int type,unsigned int code,int *pval) {int disposition =INPUT_IGNORE_EVENT ; +int value = *pval;switch (type) {
@@ -357,6 +358,7 @@ static int input_get_disposition(structbreak ; } + *pval = value;return disposition; }
@@ -365,7 +367,7 @@ static void input_handle_event(struct in {int disposition; - disposition =input_get_disposition (dev, type, code, value); + disposition =input_get_disposition (dev, type, code, &value);if ((disposition &INPUT_PASS_TO_DEVICE ) && dev->event) dev->event (dev, type, code, value);
Greg Kroah-Hartman
maintainerPATCH 13/21 coredump: fix the setting of PF_DUMPCORE
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Silesh C V <[email protected]>
commit aed8adb7688d5744cb484226820163af31d2499a upstream.
Commit 079148b919d0 ("coredump: factor out the setting of PF_DUMPCORE") cleaned up the setting of PF_DUMPCORE by removing it from all the linux_binfmt->core_dump() and moving it to zap_threads().But this ended up clearing all the previously set flags. This causes issues during core generation when tsk->flags is checked again (eg. for PF_USED_MATH to dump floating point registers). Fix this.
--- fs/coredump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/coredump.c +1 -1
@@ -299,7 +299,7 @@ static int zap_threads(struct task_strucif (unlikely (nr <0 ))return nr; - tsk->flags =PF_DUMPCORE ; + tsk->flags |=PF_DUMPCORE ;if (atomic_read (&mm->mm_users) == nr +1 ) goto done;/*
Greg Kroah-Hartman
maintainerPATCH 14/21 parisc: Remove SA_RESTORER define
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: John David Anglin <[email protected]>
commit 20dbea494543aefaace874cc3ec93a39b94b1ec4 upstream.
The sa_restorer field in struct sigaction is obsolete and no longer in the parisc implementation. However, the core code assumes the field is present if SA_RESTORER is defined. So, the define needs to be removed.
--- arch/parisc/include/uapi/asm/signal.h | 2 -- 1 file changed, 2 deletions(-)
arch/parisc/include/uapi/asm/signal.h +0 -2
@@ -69,8 +69,6 @@#define SA_NOMASK SA_NODEFER#define SA_ONESHOT SA_RESETHAND -#define SA_RESTORER 0x04000000/* obsolete -- ignored */ -#define MINSIGSTKSZ 2048#define SIGSTKSZ 8192
Greg Kroah-Hartman
maintainerPATCH 15/21 hwmon: (smsc47m192) Fix temperature limit and vrm write operations
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guenter Roeck <[email protected]>
commit 043572d5444116b9d9ad8ae763cf069e7accbc30 upstream.
Temperature limit clamps are applied after converting the temperature from milli-degrees C to degrees C, so either the clamp limit needs to be specified in degrees C, not milli-degrees C, or clamping must happen before converting to degrees C. Use the latter method to avoid overflows.
vrm is an u8, so the written value needs to be limited to [0, 255].
--- drivers/hwmon/smsc47m192.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/hwmon/smsc47m192.c +3 -1
@@ -86,7 +86,7 @@ static inline u8 IN_TO_REG(unsigned long*/ static inline s8 TEMP_TO_REG (int val) { -return clamp_val (SCALE (val,1 ,1000 ),-128000 ,127000 ); +return SCALE (clamp_val (val,-128000 ,127000 ),1 ,1000 ); }static inline int TEMP_FROM_REG (s8 val)
@@ -384,6 +384,8 @@ static ssize_t set_vrm(struct device *de err =kstrtoul (buf,10 , &val);if (err)return err; +if (val >255 ) +return -EINVAL ; data->vrm = val;return count;
Greg Kroah-Hartman
maintainerPATCH 16/21 x86_32, entry: Store badsys error code in %eax
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sven Wegener <[email protected]>
commit 8142b215501f8b291a108a202b3a053a265b03dd upstream.
Commit 554086d ("x86_32, entry: Do syscall exit work on badsys (CVE-2014-4508)") introduced a regression in the x86_32 syscall entry code, resulting in syscall() not returning proper errors for undefined syscalls on CPUs supporting the sysenter feature.
The following code:
Quoted 2 lines
int result = syscall(666);
printf("result=%d errno=%d error=%s\n", result, errno, strerror(errno));
results in:
Quoted 1 line
result=666 errno=0 error=Success
Obviously, the syscall return value is the called syscall number, but it should have been an ENOSYS error. When run under ptrace it behaves correctly, which makes it hard to debug in the wild:
Quoted 1 line
result=-1 errno=38 error=Function not implemented
The %eax register is the return value register. For debugging via ptrace the syscall entry code stores the complete register context on the stack. The badsys handlers only store the ENOSYS error code in the ptrace register set and do not set %eax like a regular syscall handler would. The old resume_userspace call chain contains code that clobbers %eax and it restores %eax from the ptrace registers afterwards. The same goes for the ptrace-enabled call chain. When ptrace is not used, the syscall return value is the passed-in syscall number from the untouched %eax register.
Use %eax as the return value register in syscall_badsys and sysenter_badsys, like a real syscall handler does, and have the caller push the value onto the stack for ptrace access.
--- arch/x86/kernel/entry_32.S | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
arch/x86/kernel/entry_32.S +5 -4
@@ -436,8 +436,8 @@ sysenter_do_call: cmpl $(NR_syscalls), %eax jae sysenter_badsys call *sys_call_table(,%eax,4) - movl %eax,PT_EAX(%esp) sysenter_after_call: + movl %eax,PT_EAX(%esp) LOCKDEP_SYS_EXIT DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF
@@ -517,6 +517,7 @@ ENTRY(system_call) jae syscall_badsys syscall_call: call *sys_call_table(,%eax,4) +syscall_after_call: movl %eax,PT_EAX(%esp) # store the return value syscall_exit: LOCKDEP_SYS_EXIT
@@ -686,12 +687,12 @@ syscall_fault: END(syscall_fault) syscall_badsys: - movl $-ENOSYS,PT_EAX(%esp) - jmp syscall_exit + movl $-ENOSYS,%eax + jmp syscall_after_call END(syscall_badsys) sysenter_badsys: - movl $-ENOSYS,PT_EAX(%esp) + movl $-ENOSYS,%eax jmp sysenter_after_call END(syscall_badsys) CFI_ENDPROC
Greg Kroah-Hartman
maintainerPATCH 17/21 mm: hugetlb: fix copy_hugetlb_page_range()
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Naoya Horiguchi <[email protected]>
commit 0253d634e0803a8376a0d88efee0bf523d8673f9 upstream.
Commit 4a705fef9862 ("hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry") changed the order of huge_ptep_set_wrprotect() and huge_ptep_get(), which leads to breakage in some workloads like hugepage-backed heap allocation via libhugetlbfs. This patch fixes it.
The test program for the problem is shown below:
$ cat heap.c #include <unistd.h> #include <stdlib.h> #include <string.h>
#define HPS 0x200000
int main() {
int i;
char *p = malloc(HPS);
memset(p, '1', HPS);
for (i = 0; i < 5; i++) {
if (!fork()) {
memset(p, '2', HPS);
p = malloc(HPS);
memset(p, '3', HPS);
free(p);
return 0;
}
}
sleep(1);
free(p);
return 0;
}
$ export HUGETLB_MORECORE=yes ; export HUGETLB_NO_PREFAULT= ; hugectl --heap ./heapFixes 4a705fef9862 ("hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry"), so is applicable to -stable kernels which include it.
--- mm/hugetlb.c | 1 + 1 file changed, 1 insertion(+)
mm/hugetlb.c +1 -0
@@ -2400,6 +2400,7 @@ int copy_hugetlb_page_range(struct mm_st }else {if (cow)huge_ptep_set_wrprotect (src, addr, src_pte); + entry =huge_ptep_get (src_pte); ptepage =pte_page (entry);get_page (ptepage);page_dup_rmap (ptepage);
Greg Kroah-Hartman
maintainerPATCH 19/21 s390/ptrace: fix PSW mask check
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martin Schwidefsky <[email protected]>
commit dab6cf55f81a6e16b8147aed9a843e1691dcd318 upstream.
The PSW mask check of the PTRACE_POKEUSR_AREA command is incorrect. The PSW_MASK_USER define contains the PSW_MASK_ASC bits, the ptrace interface accepts all combinations for the address-space-control bits. To protect the kernel space the PSW mask check in ptrace needs to reject the address-space-control bit combination for home space.
Fixes CVE-2014-3534
--- arch/s390/kernel/ptrace.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
arch/s390/kernel/ptrace.c +7 -2
@@ -314,7 +314,9 @@ static int __poke_user(struct task_struc* psw and gprs are stored on the stack */ if (addr == (addr_t) &dummy->regs.psw.mask && - ((data & ~PSW_MASK_USER ) != psw_user_bits || + (((data^psw_user_bits) & ~PSW_MASK_USER ) || + (((data^psw_user_bits) &PSW_MASK_ASC ) && + ((data|psw_user_bits) &PSW_MASK_ASC ) ==PSW_MASK_ASC ) || ((data &PSW_MASK_EA ) && !(data &PSW_MASK_BA ))))/* Invalid psw mask. */ return -EINVAL ;
@@ -627,7 +629,10 @@ static int __poke_user_compat(struct tas*/ if (addr == (addr_t) &dummy32->regs.psw.mask) {/* Build a 64 bit psw mask from 31 bit mask. */ -if ((tmp & ~PSW32_MASK_USER ) != psw32_user_bits) +if (((tmp^psw32_user_bits) & ~PSW32_MASK_USER ) || + (((tmp^psw32_user_bits) &PSW32_MASK_ASC ) && + ((tmp|psw32_user_bits) &PSW32_MASK_ASC ) + ==PSW32_MASK_ASC ))/* Invalid psw mask. */ return -EINVAL ; regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
Greg Kroah-Hartman
maintainerPATCH 21/21 core, nfqueue, openvswitch: Orphan frags in skb_zerocopy and handle errors
In reply to Greg Kroah-Hartman3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zoltan Kiss <[email protected]>
commit 36d5fe6a000790f56039afe26834265db0a3ad4c upstream.
skb_zerocopy can copy elements of the frags array between skbs, but it doesn't orphan them. Also, it doesn't handle errors, so this patch takes care of that as well, and modify the callers accordingly. skb_tx_error() is also added to the callers so they will signal the failed delivery towards the creator of the skb.
[bwh: Backported to 3.13: skb_zerocopy() is new in 3.14, but was moved from a
static function in nfnetlink_queue. We need to patch that and its caller, but not openvswitch.]
--- net/netfilter/nfnetlink_queue_core.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-)
net/netfilter/nfnetlink_queue_core.c +21 -8
@@ -227,22 +227,23 @@ nfqnl_flush(struct nfqnl_instance *queuespin_unlock_bh (&queue->lock); } -static void +static int nfqnl_zcopy (struct sk_buff *to,const struct sk_buff *from,int len,int hlen) {int i, j =0 ;int plen =0 ;/* length of skb->head fragment */ +int ret;struct page *page;unsigned int offset;/* dont bother with small payloads */ -if (len <=skb_tailroom (to)) { -skb_copy_bits (from,0 ,skb_put (to, len), len); -return ; - } +if (len <=skb_tailroom (to)) +return skb_copy_bits (from,0 ,skb_put (to, len), len);if (hlen) { -skb_copy_bits (from,0 ,skb_put (to, hlen), hlen); + ret =skb_copy_bits (from,0 ,skb_put (to, hlen), hlen); +if (unlikely (ret)) +return ret; len -= hlen; }else { plen =min_t (int,skb_headlen (from), len);
@@ -260,6 +261,11 @@ nfqnl_zcopy(struct sk_buff *to, const st to->len += len + plen; to->data_len += len + plen; +if (unlikely (skb_orphan_frags (from,GFP_ATOMIC ))) { +skb_tx_error (from); +return -ENOMEM ; + } +for (i =0 ; i <skb_shinfo (from)->nr_frags; i++) {if (!len)break ;
@@ -270,6 +276,8 @@ nfqnl_zcopy(struct sk_buff *to, const st j++; }skb_shinfo (to)->nr_frags = j; + +return 0 ; }static int nfqnl_put_packet_info (struct sk_buff *nlskb,struct sk_buff *packet)
@@ -355,13 +363,16 @@ nfqnl_build_packet_message(struct nfqnl_ skb =nfnetlink_alloc_skb (&init_net, size, queue->peer_portid,GFP_ATOMIC ); -if (!skb) +if (!skb) { +skb_tx_error (entskb);return NULL ; + } nlh =nlmsg_put (skb,0 ,0 ,NFNL_SUBSYS_QUEUE <<8 |NFQNL_MSG_PACKET ,sizeof (struct nfgenmsg ),0 );if (!nlh) { +skb_tx_error (entskb);kfree_skb (skb);return NULL ; }
@@ -481,13 +492,15 @@ nfqnl_build_packet_message(struct nfqnl_ nla->nla_type =NFQA_PAYLOAD ; nla->nla_len =nla_attr_size (data_len); -nfqnl_zcopy (skb, entskb, data_len, hlen); +if (nfqnl_zcopy (skb, entskb, data_len, hlen)) + goto nla_put_failure; } nlh->nlmsg_len = skb->len;return skb; nla_put_failure: +skb_tx_error (entskb);kfree_skb (skb);net_err_ratelimited ("nf_queue: error creating packet message\n" );return NULL ;
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.10.51 release. There are 21 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri Aug 1 01:48:18 UTC 2014. Anything received after that time might be too late.
Build results:
total: 140 pass: 140 fail: 0
Qemu tests all passed.
Details are available at http://server.roeck-us.net:8010/builders.
Guenter