<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/block, branch v3.12.10</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/block?h=v3.12.10</id>
<link rel='self' href='https://git.amat.us/linux/atom/block?h=v3.12.10'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-12-12T06:37:54Z</updated>
<entry>
<title>Update of blkg_stat and blkg_rwstat may happen in bh context. While u64_stats_fetch_retry is only preempt_disable on 32bit UP system. This is not enough to avoid preemption by bh and may read strange 64 bit value.</title>
<updated>2013-12-12T06:37:54Z</updated>
<author>
<name>Hong Zhiguo</name>
<email>zhiguohong@tencent.com</email>
</author>
<published>2013-11-20T17:35:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4830959318d14bd8856437ad5beea6016ef8c484'/>
<id>urn:sha1:4830959318d14bd8856437ad5beea6016ef8c484</id>
<content type='text'>
commit 2c575026fae6e63771bd2a4c1d407214a8096a89 upstream.

Signed-off-by: Hong Zhiguo &lt;zhiguohong@tencent.com&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>elevator: acquire q-&gt;sysfs_lock in elevator_change()</title>
<updated>2013-12-08T15:29:16Z</updated>
<author>
<name>Tomoki Sekiyama</name>
<email>tomoki.sekiyama@hds.com</email>
</author>
<published>2013-10-15T22:42:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fc655139edb1557a66fefe945ceb61715b18f929'/>
<id>urn:sha1:fc655139edb1557a66fefe945ceb61715b18f929</id>
<content type='text'>
commit 7c8a3679e3d8e9d92d58f282161760a0e247df97 upstream.

Add locking of q-&gt;sysfs_lock into elevator_change() (an exported function)
to ensure it is held to protect q-&gt;elevator from elevator_init(), even if
elevator_change() is called from non-sysfs paths.
sysfs path (elv_iosched_store) uses __elevator_change(), non-locking
version, as the lock is already taken by elv_iosched_store().

Signed-off-by: Tomoki Sekiyama &lt;tomoki.sekiyama@hds.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Josh Boyer &lt;jwboyer@fedoraproject.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>elevator: Fix a race in elevator switching and md device initialization</title>
<updated>2013-12-08T15:29:16Z</updated>
<author>
<name>Tomoki Sekiyama</name>
<email>tomoki.sekiyama@hds.com</email>
</author>
<published>2013-10-15T22:42:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d6a5267e403642c8802e5bc59cf754ba44a8993b'/>
<id>urn:sha1:d6a5267e403642c8802e5bc59cf754ba44a8993b</id>
<content type='text'>
commit eb1c160b22655fd4ec44be732d6594fd1b1e44f4 upstream.

The soft lockup below happens at the boot time of the system using dm
multipath and the udev rules to switch scheduler.

[  356.127001] BUG: soft lockup - CPU#3 stuck for 22s! [sh:483]
[  356.127001] RIP: 0010:[&lt;ffffffff81072a7d&gt;]  [&lt;ffffffff81072a7d&gt;] lock_timer_base.isra.35+0x1d/0x50
...
[  356.127001] Call Trace:
[  356.127001]  [&lt;ffffffff81073810&gt;] try_to_del_timer_sync+0x20/0x70
[  356.127001]  [&lt;ffffffff8118b08a&gt;] ? kmem_cache_alloc_node_trace+0x20a/0x230
[  356.127001]  [&lt;ffffffff810738b2&gt;] del_timer_sync+0x52/0x60
[  356.127001]  [&lt;ffffffff812ece22&gt;] cfq_exit_queue+0x32/0xf0
[  356.127001]  [&lt;ffffffff812c98df&gt;] elevator_exit+0x2f/0x50
[  356.127001]  [&lt;ffffffff812c9f21&gt;] elevator_change+0xf1/0x1c0
[  356.127001]  [&lt;ffffffff812caa50&gt;] elv_iosched_store+0x20/0x50
[  356.127001]  [&lt;ffffffff812d1d09&gt;] queue_attr_store+0x59/0xb0
[  356.127001]  [&lt;ffffffff812143f6&gt;] sysfs_write_file+0xc6/0x140
[  356.127001]  [&lt;ffffffff811a326d&gt;] vfs_write+0xbd/0x1e0
[  356.127001]  [&lt;ffffffff811a3ca9&gt;] SyS_write+0x49/0xa0
[  356.127001]  [&lt;ffffffff8164e899&gt;] system_call_fastpath+0x16/0x1b

This is caused by a race between md device initialization by multipathd and
shell script to switch the scheduler using sysfs.

 - multipathd:
   SyS_ioctl -&gt; do_vfs_ioctl -&gt; dm_ctl_ioctl -&gt; ctl_ioctl -&gt; table_load
   -&gt; dm_setup_md_queue -&gt; blk_init_allocated_queue -&gt; elevator_init
    q-&gt;elevator = elevator_alloc(q, e); // not yet initialized

 - sh -c 'echo deadline &gt; /sys/$DEVPATH/queue/scheduler':
   elevator_switch (in the call trace above)
    struct elevator_queue *old = q-&gt;elevator;
    q-&gt;elevator = elevator_alloc(q, new_e);
    elevator_exit(old);                 // lockup! (*)

 - multipathd: (cont.)
    err = e-&gt;ops.elevator_init_fn(q);   // init fails; q-&gt;elevator is modified

(*) When del_timer_sync() is called, lock_timer_base() will loop infinitely
while timer-&gt;base == NULL. In this case, as timer will never initialized,
it results in lockup.

This patch introduces acquisition of q-&gt;sysfs_lock around elevator_init()
into blk_init_allocated_queue(), to provide mutual exclusion between
initialization of the q-&gt;scheduler and switching of the scheduler.

This should fix this bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=902012

Signed-off-by: Tomoki Sekiyama &lt;tomoki.sekiyama@hds.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Josh Boyer &lt;jwboyer@fedoraproject.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>blk-core: Fix memory corruption if blkcg_init_queue fails</title>
<updated>2013-12-04T19:05:37Z</updated>
<author>
<name>Mikulas Patocka</name>
<email>mpatocka@redhat.com</email>
</author>
<published>2013-10-14T16:11:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f5360a4c39d79c150f527ebf32ee18eb2a820e1d'/>
<id>urn:sha1:f5360a4c39d79c150f527ebf32ee18eb2a820e1d</id>
<content type='text'>
commit fff4996b7db7955414ac74386efa5e07fd766b50 upstream.

If blkcg_init_queue fails, blk_alloc_queue_node doesn't call bdi_destroy
to clean up structures allocated by the backing dev.

------------[ cut here ]------------
WARNING: at lib/debugobjects.c:260 debug_print_object+0x85/0xa0()
ODEBUG: free active (active state 0) object type: percpu_counter hint:           (null)
Modules linked in: dm_loop dm_mod ip6table_filter ip6_tables uvesafb cfbcopyarea cfbimgblt cfbfillrect fbcon font bitblit fbcon_rotate fbcon_cw fbcon_ud fbcon_ccw softcursor fb fbdev ipt_MASQUERADE iptable_nat nf_nat_ipv4 msr nf_conntrack_ipv4 nf_defrag_ipv4 xt_state ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc tun ipv6 cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand cpufreq_conservative spadfs fuse hid_generic usbhid hid raid0 md_mod dmi_sysfs nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lm85 hwmon_vid snd_usb_audio snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_hwdep snd_usbmidi_lib snd_rawmidi snd soundcore acpi_cpufreq freq_table mperf sata_svw serverworks kvm_amd ide_core ehci_pci ohci_hcd libata ehci_hcd kvm usbcore tg3 usb_common libphy k10temp pcspkr ptp i2c_piix4 i2c_core evdev microcode hwmon rtc_cmos pps_core e100 skge floppy mii processor button unix
CPU: 0 PID: 2739 Comm: lvchange Tainted: G        W
3.10.15-devel #14
Hardware name: empty empty/S3992-E, BIOS 'V1.06   ' 06/09/2009
 0000000000000009 ffff88023c3c1ae8 ffffffff813c8fd4 ffff88023c3c1b20
 ffffffff810399eb ffff88043d35cd58 ffffffff81651940 ffff88023c3c1bf8
 ffffffff82479d90 0000000000000005 ffff88023c3c1b80 ffffffff81039a67
Call Trace:
 [&lt;ffffffff813c8fd4&gt;] dump_stack+0x19/0x1b
 [&lt;ffffffff810399eb&gt;] warn_slowpath_common+0x6b/0xa0
 [&lt;ffffffff81039a67&gt;] warn_slowpath_fmt+0x47/0x50
 [&lt;ffffffff8122aaaf&gt;] ? debug_check_no_obj_freed+0xcf/0x250
 [&lt;ffffffff81229a15&gt;] debug_print_object+0x85/0xa0
 [&lt;ffffffff8122abe3&gt;] debug_check_no_obj_freed+0x203/0x250
 [&lt;ffffffff8113c4ac&gt;] kmem_cache_free+0x20c/0x3a0
 [&lt;ffffffff811f6709&gt;] blk_alloc_queue_node+0x2a9/0x2c0
 [&lt;ffffffff811f672e&gt;] blk_alloc_queue+0xe/0x10
 [&lt;ffffffffa04c0093&gt;] dm_create+0x1a3/0x530 [dm_mod]
 [&lt;ffffffffa04c6bb0&gt;] ? list_version_get_info+0xe0/0xe0 [dm_mod]
 [&lt;ffffffffa04c6c07&gt;] dev_create+0x57/0x2b0 [dm_mod]
 [&lt;ffffffffa04c6bb0&gt;] ? list_version_get_info+0xe0/0xe0 [dm_mod]
 [&lt;ffffffffa04c6bb0&gt;] ? list_version_get_info+0xe0/0xe0 [dm_mod]
 [&lt;ffffffffa04c6528&gt;] ctl_ioctl+0x268/0x500 [dm_mod]
 [&lt;ffffffff81097662&gt;] ? get_lock_stats+0x22/0x70
 [&lt;ffffffffa04c67ce&gt;] dm_ctl_ioctl+0xe/0x20 [dm_mod]
 [&lt;ffffffff81161aad&gt;] do_vfs_ioctl+0x2ed/0x520
 [&lt;ffffffff8116cfc7&gt;] ? fget_light+0x377/0x4e0
 [&lt;ffffffff81161d2b&gt;] SyS_ioctl+0x4b/0x90
 [&lt;ffffffff813cff16&gt;] system_call_fastpath+0x1a/0x1f
---[ end trace 4b5ff0d55673d986 ]---
------------[ cut here ]------------

This fix should be backported to stable kernels starting with 2.6.37. Note
that in the kernels prior to 3.5 the affected code is different, but the
bug is still there - bdi_init is called and bdi_destroy isn't.

Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>block: properly stack underlying max_segment_size to DM device</title>
<updated>2013-11-29T19:28:07Z</updated>
<author>
<name>Mike Snitzer</name>
<email>snitzer@redhat.com</email>
</author>
<published>2013-10-18T15:44:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fa9d73efe4b185ff3a9f47d68bd78a2f23b35460'/>
<id>urn:sha1:fa9d73efe4b185ff3a9f47d68bd78a2f23b35460</id>
<content type='text'>
commit d82ae52e68892338068e7559a0c0657193341ce4 upstream.

Without this patch all DM devices will default to BLK_MAX_SEGMENT_SIZE
(65536) even if the underlying device(s) have a larger value -- this is
due to blk_stack_limits() using min_not_zero() when stacking the
max_segment_size limit.

1073741824

before patch:
65536

after patch:
1073741824

Reported-by: Lukasz Flis &lt;l.flis@cyfronet.pl&gt;
Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>block: fix race between request completion and timeout handling</title>
<updated>2013-11-29T19:28:06Z</updated>
<author>
<name>Jeff Moyer</name>
<email>jmoyer@redhat.com</email>
</author>
<published>2013-10-08T18:36:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6c8a390a12e552d1545485809246aeaae7a39a9e'/>
<id>urn:sha1:6c8a390a12e552d1545485809246aeaae7a39a9e</id>
<content type='text'>
commit 4912aa6c11e6a5d910264deedbec2075c6f1bb73 upstream.

crocode i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma dca be2net sg ses enclosure ext4 mbcache jbd2 sd_mod crc_t10dif ahci megaraid_sas(U) dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]

Pid: 491, comm: scsi_eh_0 Tainted: G        W  ----------------   2.6.32-220.13.1.el6.x86_64 #1 IBM  -[8722PAX]-/00D1461
RIP: 0010:[&lt;ffffffff8124e424&gt;]  [&lt;ffffffff8124e424&gt;] blk_requeue_request+0x94/0xa0
RSP: 0018:ffff881057eefd60  EFLAGS: 00010012
RAX: ffff881d99e3e8a8 RBX: ffff881d99e3e780 RCX: ffff881d99e3e8a8
RDX: ffff881d99e3e8a8 RSI: ffff881d99e3e780 RDI: ffff881d99e3e780
RBP: ffff881057eefd80 R08: ffff881057eefe90 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: ffff881057f92338
R13: 0000000000000000 R14: ffff881057f92338 R15: ffff883058188000
FS:  0000000000000000(0000) GS:ffff880040200000(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 00000000006d3ec0 CR3: 000000302cd7d000 CR4: 00000000000406b0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process scsi_eh_0 (pid: 491, threadinfo ffff881057eee000, task ffff881057e29540)
Stack:
 0000000000001057 0000000000000286 ffff8810275efdc0 ffff881057f16000
&lt;0&gt; ffff881057eefdd0 ffffffff81362323 ffff881057eefe20 ffffffff8135f393
&lt;0&gt; ffff881057e29af8 ffff8810275efdc0 ffff881057eefe78 ffff881057eefe90
Call Trace:
 [&lt;ffffffff81362323&gt;] __scsi_queue_insert+0xa3/0x150
 [&lt;ffffffff8135f393&gt;] ? scsi_eh_ready_devs+0x5e3/0x850
 [&lt;ffffffff81362a23&gt;] scsi_queue_insert+0x13/0x20
 [&lt;ffffffff8135e4d4&gt;] scsi_eh_flush_done_q+0x104/0x160
 [&lt;ffffffff8135fb6b&gt;] scsi_error_handler+0x35b/0x660
 [&lt;ffffffff8135f810&gt;] ? scsi_error_handler+0x0/0x660
 [&lt;ffffffff810908c6&gt;] kthread+0x96/0xa0
 [&lt;ffffffff8100c14a&gt;] child_rip+0xa/0x20
 [&lt;ffffffff81090830&gt;] ? kthread+0x0/0xa0
 [&lt;ffffffff8100c140&gt;] ? child_rip+0x0/0x20
Code: 00 00 eb d1 4c 8b 2d 3c 8f 97 00 4d 85 ed 74 bf 49 8b 45 00 49 83 c5 08 48 89 de 4c 89 e7 ff d0 49 8b 45 00 48 85 c0 75 eb eb a4 &lt;0f&gt; 0b eb fe 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00
RIP  [&lt;ffffffff8124e424&gt;] blk_requeue_request+0x94/0xa0
 RSP &lt;ffff881057eefd60&gt;

The RIP is this line:
        BUG_ON(blk_queued_rq(rq));

After digging through the code, I think there may be a race between the
request completion and the timer handler running.

A timer is started for each request put on the device's queue (see
blk_start_request-&gt;blk_add_timer).  If the request does not complete
before the timer expires, the timer handler (blk_rq_timed_out_timer)
will mark the request complete atomically:

static inline int blk_mark_rq_complete(struct request *rq)
{
        return test_and_set_bit(REQ_ATOM_COMPLETE, &amp;rq-&gt;atomic_flags);
}

and then call blk_rq_timed_out.  The latter function will call
scsi_times_out, which will return one of BLK_EH_HANDLED,
BLK_EH_RESET_TIMER or BLK_EH_NOT_HANDLED.  If BLK_EH_RESET_TIMER is
returned, blk_clear_rq_complete is called, and blk_add_timer is again
called to simply wait longer for the request to complete.

Now, if the request happens to complete while this is going on, what
happens?  Given that we know the completion handler will bail if it
finds the REQ_ATOM_COMPLETE bit set, we need to focus on the completion
handler running after that bit is cleared.  So, from the above
paragraph, after the call to blk_clear_rq_complete.  If the completion
sets REQ_ATOM_COMPLETE before the BUG_ON in blk_add_timer, we go boom
there (I haven't seen this in the cores).  Next, if we get the
completion before the call to list_add_tail, then the timer will
eventually fire for an old req, which may either be freed or reallocated
(there is evidence that this might be the case).  Finally, if the
completion comes in *after* the addition to the timeout list, I think
it's harmless.  The request will be removed from the timeout list,
req_atom_complete will be set, and all will be well.

This will only actually explain the coredumps *IF* the request
structure was freed, reallocated *and* queued before the error handler
thread had a chance to process it.  That is possible, but it may make
sense to keep digging for another race.  I think that if this is what
was happening, we would see other instances of this problem showing up
as null pointer or garbage pointer dereferences, for example when the
request structure was not re-used.  It looks like we actually do run
into that situation in other reports.

This patch moves the BUG_ON(test_bit(REQ_ATOM_COMPLETE,
&amp;req-&gt;atomic_flags)); from blk_add_timer to the only caller that could
trip over it (blk_start_request).  It then inverts the calls to
blk_clear_rq_complete and blk_add_timer in blk_rq_timed_out to address
the race.  I've boot tested this patch, but nothing more.

Signed-off-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Acked-by: Hannes Reinecke &lt;hare@suse.de&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>block/partitions/efi.c: treat size mismatch as a warning, not an error</title>
<updated>2013-10-17T04:35:53Z</updated>
<author>
<name>Doug Anderson</name>
<email>dianders@chromium.org</email>
</author>
<published>2013-10-16T20:46:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=87fc0ad2ad8a15de653f4cef7760fa35e689077f'/>
<id>urn:sha1:87fc0ad2ad8a15de653f4cef7760fa35e689077f</id>
<content type='text'>
In commit 27a7c642174e ("partitions/efi: account for pmbr size in lba")
we started treating bad sizes in lba field of the partition that has the
0xEE (GPT protective) as errors.

However, we may run into these "bad sizes" in the real world if someone
uses dd to copy an image from a smaller disk to a bigger disk.  Since
this case used to work (even without using force_gpt), keep it working
and treat the size mismatch as a warning instead of an error.

Reported-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
Reported-by: Sean Paul &lt;seanpaul@chromium.org&gt;
Signed-off-by: Doug Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
Acked-by: Davidlohr Bueso &lt;davidlohr@hp.com&gt;
Tested-by: Artem Bityutskiy &lt;dedekind1@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>block: change config option name for cmdline partition parsing</title>
<updated>2013-09-30T21:31:02Z</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2013-09-30T20:45:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=080506ad0aa9c9fbc7879cdd290d55624da08c60'/>
<id>urn:sha1:080506ad0aa9c9fbc7879cdd290d55624da08c60</id>
<content type='text'>
Recently commit bab55417b10c ("block: support embedded device command
line partition") introduced CONFIG_CMDLINE_PARSER.  However, that name
is too generic and sounds like it enables/disables generic kernel boot
arg processing, when it really is block specific.

Before this option becomes a part of a full/final release, add the BLK_
prefix to it so that it is clear in absence of any other context that it
is block specific.

In addition, fix up the following less critical items:
 - help text was not really at all helpful.
 - index file for Documentation was not updated
 - add the new arg to Documentation/kernel-parameters.txt
 - clarify wording in source comments

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Cai Zhiyong &lt;caizhiyong@huawei.com&gt;
Cc: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-3.12/core' of git://git.kernel.dk/linux-block</title>
<updated>2013-09-22T22:00:11Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-09-22T22:00:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=68cf8d0c720cdb76dc912c983d8dae9de6d6e5cf'/>
<id>urn:sha1:68cf8d0c720cdb76dc912c983d8dae9de6d6e5cf</id>
<content type='text'>
Pull block IO fixes from Jens Axboe:
 "After merge window, no new stuff this time only a collection of neatly
  confined and simple fixes"

* 'for-3.12/core' of git://git.kernel.dk/linux-block:
  cfq: explicitly use 64bit divide operation for 64bit arguments
  block: Add nr_bios to block_rq_remap tracepoint
  If the queue is dying then we only call the rq-&gt;end_io callout. This leaves bios setup on the request, because the caller assumes when the blk_execute_rq_nowait/blk_execute_rq call has completed that the rq-&gt;bios have been cleaned up.
  bio-integrity: Fix use of bs-&gt;bio_integrity_pool after free
  blkcg: relocate root_blkg setting and clearing
  block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
  block: trace all devices plug operation
</content>
</entry>
<entry>
<title>cfq: explicitly use 64bit divide operation for 64bit arguments</title>
<updated>2013-09-22T18:43:47Z</updated>
<author>
<name>Anatol Pomozov</name>
<email>anatol.pomozov@gmail.com</email>
</author>
<published>2013-09-22T18:43:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f3cff25f05f2ac29b2ee355e611b0657482f6f1d'/>
<id>urn:sha1:f3cff25f05f2ac29b2ee355e611b0657482f6f1d</id>
<content type='text'>
'samples' is 64bit operant, but do_div() second parameter is 32.
do_div silently truncates high 32 bits and calculated result
is invalid.

In case if low 32bit of 'samples' are zeros then do_div() produces
kernel crash.

Signed-off-by: Anatol Pomozov &lt;anatol.pomozov@gmail.com&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
</feed>
