[Drbd-dev] remove kernel_setsockopt and kernel_getsockopt v2
David.Laight at ACULAB.COM
Sat Jun 13 12:17:17 CEST 2020
From: 'Christoph Hellwig'
> Sent: 21 May 2020 10:12
> > I worried about whether getsockopt() should read the entire
> > user buffer first. SCTP needs the some of it often (including a
> > sockaddr_storage in one case), TCP needs it once.
> > However the cost of reading a few words is small, and a big
> > buffer probably needs setting to avoid leaking kernel
> > memory if the structure has holes or fields that don't get set.
> > Reading from userspace solves both issues.
> As mention in the thread on the last series: That was my first idea, but
> we have way to many sockopts, especially in obscure protocols that just
> hard code the size. The chance of breaking userspace in a way that can't
> be fixed without going back to passing user pointers to get/setsockopt
> is way to high to commit to such a change unfortunately.
Right the syscall stubs probably can't do it.
But the per-protocol ones can for the main protocols.
I posted a patch for SCTP yesterday that removes 800 lines
of source and 8k of object code.
Even that needs a horrid bodge for one request where the
length returned has to be less than the data copied!
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
More information about the drbd-dev