From mboxrd@z Thu Jan 1 00:00:00 1970 From: Miklos Szeredi Subject: Re: error value for "internal error" Date: Wed, 3 May 2017 11:10:22 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: In-Reply-To: Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Linus Torvalds Cc: Linux Kernel Mailing List , Linux API List-Id: linux-api@vger.kernel.org On Tue, May 2, 2017 at 8:37 PM, Linus Torvalds wrote: > On Tue, May 2, 2017 at 7:03 AM, Miklos Szeredi wrote: >> I've been wondering what to return for soft asserts like this: >> >> if (WARN_ON(something unexpected)) >> return -E????; >> >> EINVAL doesn't fit because it means the input from userspace was >> wrong. EIO means something went bad with the hardware. > > I think we've traditionally just used EIO for "something went wrong". > It's not necessarily hardware that went wrong. > > That's particularly true when there is a WARN_ON() that then gives > more details of where this actually happened in the system logs - at > that point the error number really doesn't matter all that much. Still, wouldn't it make sense to differentiate between a) something went wrong with the hardware b) the kernel is buggy which are completely different things? The only reason to use a traditional errno like EIO, is that userspace may be able to handle it instead of just throwing up its hands and exiting. In case of a kernel internal error, it's unlikely that userspace will be able to work around it, while hardware errors are more promising. But maybe I'm wrong about this one... Thanks, Miklos