<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sunrpc, branch linux-4.12.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.12.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.12.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2017-08-30T08:26:40Z</updated>
<entry>
<title>net: sunrpc: svcsock: fix NULL-pointer exception</title>
<updated>2017-08-30T08:26:40Z</updated>
<author>
<name>Vadim Lomovtsev</name>
</author>
<published>2017-08-21T11:23:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4909a7b79965764bd9a1f4c4f9f5000f1e57683a'/>
<id>urn:sha1:4909a7b79965764bd9a1f4c4f9f5000f1e57683a</id>
<content type='text'>
commit eebe53e87f97975ee58a21693e44797608bf679c upstream.

While running nfs/connectathon tests kernel NULL-pointer exception
has been observed due to races in svcsock.c.

Race is appear when kernel accepts connection by kernel_accept
(which creates new socket) and start queuing ingress packets
to new socket. This happens in ksoftirq context which could run
concurrently on a different core while new socket setup is not done yet.

The fix is to re-order socket user data init sequence and add
write/read barrier calls to be sure that we got proper values
for callback pointers before actually calling them.

Test results: nfs/connectathon reports '0' failed tests for about 200+ iterations.

Crash log:
---&lt;-snip-&gt;---
[ 6708.638984] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 6708.647093] pgd = ffff0000094e0000
[ 6708.650497] [00000000] *pgd=0000010ffff90003, *pud=0000010ffff90003, *pmd=0000010ffff80003, *pte=0000000000000000
[ 6708.660761] Internal error: Oops: 86000005 [#1] SMP
[ 6708.665630] Modules linked in: nfsv3 nfnetlink_queue nfnetlink_log nfnetlink rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache overlay xt_CONNSECMARK xt_SECMARK xt_conntrack iptable_security ip_tables ah4 xfrm4_mode_transport sctp tun binfmt_misc ext4 jbd2 mbcache loop tcp_diag udp_diag inet_diag rpcrdma ib_isert iscsi_target_mod ib_iser rdma_cm iw_cm libiscsi scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib ib_ucm ib_uverbs ib_umad ib_cm ib_core nls_koi8_u nls_cp932 ts_kmp nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack vfat fat ghash_ce sha2_ce sha1_ce cavium_rng_vf i2c_thunderx sg thunderx_edac i2c_smbus edac_core cavium_rng nfsd auth_rpcgss nfs_acl lockd grace sunrpc xfs libcrc32c nicvf nicpf ast i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops
[ 6708.736446]  ttm drm i2c_core thunder_bgx thunder_xcv mdio_thunder mdio_cavium dm_mirror dm_region_hash dm_log dm_mod [last unloaded: stap_3c300909c5b3f46dcacd49aab3334af_87021]
[ 6708.752275] CPU: 84 PID: 0 Comm: swapper/84 Tainted: G        W  OE   4.11.0-4.el7.aarch64 #1
[ 6708.760787] Hardware name: www.cavium.com CRB-2S/CRB-2S, BIOS 0.3 Mar 13 2017
[ 6708.767910] task: ffff810006842e80 task.stack: ffff81000689c000
[ 6708.773822] PC is at 0x0
[ 6708.776739] LR is at svc_data_ready+0x38/0x88 [sunrpc]
[ 6708.781866] pc : [&lt;0000000000000000&gt;] lr : [&lt;ffff0000029d7378&gt;] pstate: 60000145
[ 6708.789248] sp : ffff810ffbad3900
[ 6708.792551] x29: ffff810ffbad3900 x28: ffff000008c73d58
[ 6708.797853] x27: 0000000000000000 x26: ffff81000bbe1e00
[ 6708.803156] x25: 0000000000000020 x24: ffff800f7410bf28
[ 6708.808458] x23: ffff000008c63000 x22: ffff000008c63000
[ 6708.813760] x21: ffff800f7410bf28 x20: ffff81000bbe1e00
[ 6708.819063] x19: ffff810012412400 x18: 00000000d82a9df2
[ 6708.824365] x17: 0000000000000000 x16: 0000000000000000
[ 6708.829667] x15: 0000000000000000 x14: 0000000000000001
[ 6708.834969] x13: 0000000000000000 x12: 722e736f622e676e
[ 6708.840271] x11: 00000000f814dd99 x10: 0000000000000000
[ 6708.845573] x9 : 7374687225000000 x8 : 0000000000000000
[ 6708.850875] x7 : 0000000000000000 x6 : 0000000000000000
[ 6708.856177] x5 : 0000000000000028 x4 : 0000000000000000
[ 6708.861479] x3 : 0000000000000000 x2 : 00000000e5000000
[ 6708.866781] x1 : 0000000000000000 x0 : ffff81000bbe1e00
[ 6708.872084]
[ 6708.873565] Process swapper/84 (pid: 0, stack limit = 0xffff81000689c000)
[ 6708.880341] Stack: (0xffff810ffbad3900 to 0xffff8100068a0000)
[ 6708.886075] Call trace:
[ 6708.888513] Exception stack(0xffff810ffbad3710 to 0xffff810ffbad3840)
[ 6708.894942] 3700:                                   ffff810012412400 0001000000000000
[ 6708.902759] 3720: ffff810ffbad3900 0000000000000000 0000000060000145 ffff800f79300000
[ 6708.910577] 3740: ffff000009274d00 00000000000003ea 0000000000000015 ffff000008c63000
[ 6708.918395] 3760: ffff810ffbad3830 ffff800f79300000 000000000000004d 0000000000000000
[ 6708.926212] 3780: ffff810ffbad3890 ffff0000080f88dc ffff800f79300000 000000000000004d
[ 6708.934030] 37a0: ffff800f7930093c ffff000008c63000 0000000000000000 0000000000000140
[ 6708.941848] 37c0: ffff000008c2c000 0000000000040b00 ffff81000bbe1e00 0000000000000000
[ 6708.949665] 37e0: 00000000e5000000 0000000000000000 0000000000000000 0000000000000028
[ 6708.957483] 3800: 0000000000000000 0000000000000000 0000000000000000 7374687225000000
[ 6708.965300] 3820: 0000000000000000 00000000f814dd99 722e736f622e676e 0000000000000000
[ 6708.973117] [&lt;          (null)&gt;]           (null)
[ 6708.977824] [&lt;ffff0000086f9fa4&gt;] tcp_data_queue+0x754/0xc5c
[ 6708.983386] [&lt;ffff0000086fa64c&gt;] tcp_rcv_established+0x1a0/0x67c
[ 6708.989384] [&lt;ffff000008704120&gt;] tcp_v4_do_rcv+0x15c/0x22c
[ 6708.994858] [&lt;ffff000008707418&gt;] tcp_v4_rcv+0xaf0/0xb58
[ 6709.000077] [&lt;ffff0000086df784&gt;] ip_local_deliver_finish+0x10c/0x254
[ 6709.006419] [&lt;ffff0000086dfea4&gt;] ip_local_deliver+0xf0/0xfc
[ 6709.011980] [&lt;ffff0000086dfad4&gt;] ip_rcv_finish+0x208/0x3a4
[ 6709.017454] [&lt;ffff0000086e018c&gt;] ip_rcv+0x2dc/0x3c8
[ 6709.022328] [&lt;ffff000008692fc8&gt;] __netif_receive_skb_core+0x2f8/0xa0c
[ 6709.028758] [&lt;ffff000008696068&gt;] __netif_receive_skb+0x38/0x84
[ 6709.034580] [&lt;ffff00000869611c&gt;] netif_receive_skb_internal+0x68/0xdc
[ 6709.041010] [&lt;ffff000008696bc0&gt;] napi_gro_receive+0xcc/0x1a8
[ 6709.046690] [&lt;ffff0000014b0fc4&gt;] nicvf_cq_intr_handler+0x59c/0x730 [nicvf]
[ 6709.053559] [&lt;ffff0000014b1380&gt;] nicvf_poll+0x38/0xb8 [nicvf]
[ 6709.059295] [&lt;ffff000008697a6c&gt;] net_rx_action+0x2f8/0x464
[ 6709.064771] [&lt;ffff000008081824&gt;] __do_softirq+0x11c/0x308
[ 6709.070164] [&lt;ffff0000080d14e4&gt;] irq_exit+0x12c/0x174
[ 6709.075206] [&lt;ffff00000813101c&gt;] __handle_domain_irq+0x78/0xc4
[ 6709.081027] [&lt;ffff000008081608&gt;] gic_handle_irq+0x94/0x190
[ 6709.086501] Exception stack(0xffff81000689fdf0 to 0xffff81000689ff20)
[ 6709.092929] fde0:                                   0000810ff2ec0000 ffff000008c10000
[ 6709.100747] fe00: ffff000008c70ef4 0000000000000001 0000000000000000 ffff810ffbad9b18
[ 6709.108565] fe20: ffff810ffbad9c70 ffff8100169d3800 ffff810006843ab0 ffff81000689fe80
[ 6709.116382] fe40: 0000000000000bd0 0000ffffdf979cd0 183f5913da192500 0000ffff8a254ce4
[ 6709.124200] fe60: 0000ffff8a254b78 0000aaab10339808 0000000000000000 0000ffff8a0c2a50
[ 6709.132018] fe80: 0000ffffdf979b10 ffff000008d6d450 ffff000008c10000 ffff000008d6d000
[ 6709.139836] fea0: 0000000000000054 ffff000008cd3dbc 0000000000000000 0000000000000000
[ 6709.147653] fec0: 0000000000000000 0000000000000000 0000000000000000 ffff81000689ff20
[ 6709.155471] fee0: ffff000008085240 ffff81000689ff20 ffff000008085244 0000000060000145
[ 6709.163289] ff00: ffff81000689ff10 ffff00000813f1e4 ffffffffffffffff ffff00000813f238
[ 6709.171107] [&lt;ffff000008082eb4&gt;] el1_irq+0xb4/0x140
[ 6709.175976] [&lt;ffff000008085244&gt;] arch_cpu_idle+0x44/0x11c
[ 6709.181368] [&lt;ffff0000087bf3b8&gt;] default_idle_call+0x20/0x30
[ 6709.187020] [&lt;ffff000008116d50&gt;] do_idle+0x158/0x1e4
[ 6709.191973] [&lt;ffff000008116ff4&gt;] cpu_startup_entry+0x2c/0x30
[ 6709.197624] [&lt;ffff00000808e7cc&gt;] secondary_start_kernel+0x13c/0x160
[ 6709.203878] [&lt;0000000001bc71c4&gt;] 0x1bc71c4
[ 6709.207967] Code: bad PC value
[ 6709.211061] SMP: stopping secondary CPUs
[ 6709.218830] Starting crashdump kernel...
[ 6709.222749] Bye!
---&lt;-snip&gt;---

Signed-off-by: Vadim Lomovtsev &lt;vlomovts@redhat.com&gt;
Reviewed-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>net/sunrpc/xprt_sock: fix regression in connection error reporting.</title>
<updated>2017-07-27T22:10:20Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2017-07-19T04:05:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7956cddeaebf7422c9aa949665a7a39cbb2bea0b'/>
<id>urn:sha1:7956cddeaebf7422c9aa949665a7a39cbb2bea0b</id>
<content type='text'>
commit 3ffbc1d65583394be12801655781dd2b079ce169 upstream.

Commit 3d4762639dd3 ("tcp: remove poll() flakes when receiving
RST") in v4.12 changed the order in which -&gt;sk_state_change()
and -&gt;sk_error_report() are called when a socket is shut
down - sk_state_change() is now called first.

This causes xs_tcp_state_change() -&gt; xs_sock_mark_closed() -&gt;
xprt_disconnect_done() to wake all pending tasked with -EAGAIN.
When the -&gt;sk_error_report() callback arrives, it is too late to
pass the error on, and it is lost.

As easy way to demonstrate the problem caused is to try to start
rpc.nfsd while rcpbind isn't running.
nfsd will attempt a tcp connection to rpcbind.  A ECONNREFUSED
error is returned, but sunrpc code loses the error and keeps
retrying.  If it saw the ECONNREFUSED, it would abort.

To fix this, handle the sk-&gt;sk_err in the TCP_CLOSE branch of
xs_tcp_state_change().

Fixes: 3d4762639dd3 ("tcp: remove poll() flakes when receiving RST")
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>sunrpc: use constant time memory comparison for mac</title>
<updated>2017-07-27T22:10:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
</author>
<published>2017-06-10T02:59:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=41509dbadbecd846a597d8d0442dc3b6982f0361'/>
<id>urn:sha1:41509dbadbecd846a597d8d0442dc3b6982f0361</id>
<content type='text'>
commit 15a8b93fd5690de017ce665382ea45e5d61811a4 upstream.

Otherwise, we enable a MAC forgery via timing attack.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
Cc: "J. Bruce Fields" &lt;bfields@fieldses.org&gt;
Cc: Jeff Layton &lt;jlayton@poochiereds.net&gt;
Cc: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
Cc: Anna Schumaker &lt;anna.schumaker@netapp.com&gt;
Cc: linux-nfs@vger.kernel.org
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>SUNRPC: ensure correct error is reported by xs_tcp_setup_socket()</title>
<updated>2017-05-31T16:26:44Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2017-05-25T07:00:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ea44adce91526700535b3150f77f8639ae8c82d'/>
<id>urn:sha1:6ea44adce91526700535b3150f77f8639ae8c82d</id>
<content type='text'>
If you attempt a TCP mount from an host that is unreachable in a way
that triggers an immediate error from kernel_connect(), that error
does not propagate up, instead EAGAIN is reported.

This results in call_connect_status receiving the wrong error.

A case that it easy to demonstrate is to attempt to mount from an
address that results in ENETUNREACH, but first deleting any default
route.
Without this patch, the mount.nfs process is persistently runnable
and is hard to kill.  With this patch it exits as it should.

The problem is caused by the fact that xs_tcp_force_close() eventually
calls
      xprt_wake_pending_tasks(xprt, -EAGAIN);
which causes an error return of -EAGAIN.  so when xs_tcp_setup_sock()
calls
      xprt_wake_pending_tasks(xprt, status);
the status is ignored.

Fixes: 4efdd92c9211 ("SUNRPC: Remove TCP client connection reset hack")
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>xprtrdma: Delete an error message for a failed memory allocation in xprt_rdma_bc_setup()</title>
<updated>2017-05-24T11:53:37Z</updated>
<author>
<name>Markus Elfring</name>
</author>
<published>2017-05-22T20:18:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2c23c0075d7091bf749411bd2ee757cf4ec356c'/>
<id>urn:sha1:d2c23c0075d7091bf749411bd2ee757cf4ec356c</id>
<content type='text'>
Omit an extra message for a memory allocation failure in this function.

This issue was detected by using the Coccinelle software.

Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf
Signed-off-by: Markus Elfring &lt;elfring@users.sourceforge.net&gt;
Reviewed-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'nfsd-4.12' of git://linux-nfs.org/~bfields/linux</title>
<updated>2017-05-10T20:29:23Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2017-05-10T20:29:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c70422f760c120480fee4de6c38804c72aa26bc1'/>
<id>urn:sha1:c70422f760c120480fee4de6c38804c72aa26bc1</id>
<content type='text'>
Pull nfsd updates from Bruce Fields:
 "Another RDMA update from Chuck Lever, and a bunch of miscellaneous
  bugfixes"

* tag 'nfsd-4.12' of git://linux-nfs.org/~bfields/linux: (26 commits)
  nfsd: Fix up the "supattr_exclcreat" attributes
  nfsd: encoders mustn't use unitialized values in error cases
  nfsd: fix undefined behavior in nfsd4_layout_verify
  lockd: fix lockd shutdown race
  NFSv4: Fix callback server shutdown
  SUNRPC: Refactor svc_set_num_threads()
  NFSv4.x/callback: Create the callback service through svc_create_pooled
  lockd: remove redundant check on block
  svcrdma: Clean out old XDR encoders
  svcrdma: Remove the req_map cache
  svcrdma: Remove unused RDMA Write completion handler
  svcrdma: Reduce size of sge array in struct svc_rdma_op_ctxt
  svcrdma: Clean up RPC-over-RDMA backchannel reply processing
  svcrdma: Report Write/Reply chunk overruns
  svcrdma: Clean up RDMA_ERROR path
  svcrdma: Use rdma_rw API in RPC reply path
  svcrdma: Introduce local rdma_rw API helpers
  svcrdma: Clean up svc_rdma_get_inv_rkey()
  svcrdma: Add helper to save pages under I/O
  svcrdma: Eliminate RPCRDMA_SQ_DEPTH_MULT
  ...
</content>
</entry>
<entry>
<title>NFSv4: Fix callback server shutdown</title>
<updated>2017-04-27T22:00:16Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2017-04-26T15:55:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ed6473ddc704a2005b9900ca08e236ebb2d8540a'/>
<id>urn:sha1:ed6473ddc704a2005b9900ca08e236ebb2d8540a</id>
<content type='text'>
We want to use kthread_stop() in order to ensure the threads are
shut down before we tear down the nfs_callback_info in nfs_callback_down.

Tested-and-reviewed-by: Kinglong Mee &lt;kinglongmee@gmail.com&gt;
Reported-by: Kinglong Mee &lt;kinglongmee@gmail.com&gt;
Fixes: bb6aeba736ba9 ("NFSv4.x: Switch to using svc_set_num_threads()...")
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: Refactor svc_set_num_threads()</title>
<updated>2017-04-27T21:59:58Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2017-04-26T15:55:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9e0d87680d689f1758185851c3da6eafb16e71e1'/>
<id>urn:sha1:9e0d87680d689f1758185851c3da6eafb16e71e1</id>
<content type='text'>
Refactor to separate out the functions of starting and stopping threads
so that they can be used in other helpers.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
Tested-and-reviewed-by: Kinglong Mee &lt;kinglongmee@gmail.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'nfs-rdma-4.12-1' of git://git.linux-nfs.org/projects/anna/nfs-rdma</title>
<updated>2017-04-25T22:42:48Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2017-04-25T22:42:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=35a2442189015bf540197906e745c7b7c100f28c'/>
<id>urn:sha1:35a2442189015bf540197906e745c7b7c100f28c</id>
<content type='text'>
NFS: NFS over RDMA Client Side Changes

New Features:
- Break RDMA connections after a connection timeout
- Support for unloading the underlying device driver

Bugfixes and cleanups:
- Mark the receive workqueue as "read-mostly"
- Silence warnings caused by ENOBUFS
- Update a comment in xdr_init_decode_pages()
- Remove rpcrdma_buffer-&gt;rb_pool.
</content>
</entry>
<entry>
<title>svcrdma: Clean out old XDR encoders</title>
<updated>2017-04-25T21:25:56Z</updated>
<author>
<name>Chuck Lever</name>
</author>
<published>2017-04-09T17:07:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dadf3e435debb85dfcf28c157012047153a21a97'/>
<id>urn:sha1:dadf3e435debb85dfcf28c157012047153a21a97</id>
<content type='text'>
Clean up: These have been replaced and are no longer used.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Reviewed-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
</content>
</entry>
</feed>
