On Thu, 23 Jan 2014, Mathieu Desnoyers wrote: > ----- Original Message ----- > > From: "Mikulas Patocka" <mpatocka@xxxxxxxxxx> > > To: "Mathieu Desnoyers" <mathieu.desnoyers@xxxxxxxxxxxx>, "Richard Henderson" <rth@xxxxxxxxxxx>, "Ivan Kokshaysky" > > <ink@xxxxxxxxxxxxxxxxxxxx>, "Matt Turner" <mattst88@xxxxxxxxx>, linux-alpha@xxxxxxxxxxxxxxx > > Cc: "David Miller" <davem@xxxxxxxxxxxxx>, "Oleg Nesterov" <oleg@xxxxxxxxxx>, "Jay Estabrook" > > <jay.estabrook@xxxxxxxxx>, "Michael Cree" <mcree@xxxxxxxxxxxx>, "Jens Axboe" <axboe@xxxxxxxxx> > > Sent: Wednesday, January 22, 2014 11:04:33 PM > > Subject: [PATCH] alpha: fix broken network checksum > > > > The patch 3ddc5b46a8e90f3c9251338b60191d0a804b0d92 breaks networking on > > alpha (there is a follow-up fix 5cfe8f1ba5eebe6f4b6e5858cdb1a5be4f3272a6, > > but networking is still broken even with the second patch). > > > > The patch 3ddc5b46a8e90f3c9251338b60191d0a804b0d92 makes > > csum_partial_copy_from_user check the pointer with access_ok. However, > > csum_partial_copy_from_user is called also from csum_partial_copy_nocheck > > and csum_partial_copy_nocheck is called on kernel pointers and it is > > supposed not to check pointer validity. > > > > This bug results in ssh session hangs if the system is loaded and bulk > > data are printed to ssh terminal. > > > > This patch fixes csum_partial_copy_nocheck to call set_fs(KERNEL_DS), so > > that access_ok in csum_partial_copy_from_user accepts kernel-space > > addresses. > > I see that most architectures implement a csum_partial_copy_generic() > called from csum_partial_copy_nocheck() for this purpose rather than > re-using csum_partial_copy_from_user(). > > I understand that this fix is the minimal change needed to get things to > work, so I think it's important to pull it in, but it might be a good > thing to consider implementing a csum_partial_copy_generic() for alpha > eventually if performance matters. > > Thanks! > > Mathieu You could move the common code without the access_ok check to another function. But csum_partial_copy_from_user is called much more often than csum_partial_copy_nocheck, so the current code has smaller i-cache footprint. BTW. the ia-64 version of csum_partial_copy_from_user lacks access_ok too. Mikulas -- To unsubscribe from this list: send the line "unsubscribe linux-alpha" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html