> On Mar 8, 2021, at 1:49 AM, Aili Yao <yaoa...@kingsoft.com> wrote: > > On Sun, 7 Mar 2021 11:16:24 -0800 > Andy Lutomirski <l...@amacapital.net> wrote: > >>>>>>> Some programs may use read(2), write(2), etc as ways to check if >>>>>>> memory is valid without getting a signal. They might not want >>>>>>> signals, which means that this feature might need to be configurable. >>>>>> >>>>>> That sounds like an appalling hack. If users need such a mechanism >>>>>> we should create some better way to do that. >>>>>> >>>>> >>>>> Appalling hack or not, it works. So, if we’re going to send a signal to >>>>> user code that looks like it originated from a bina fide architectural >>>>> recoverable fault, it needs to be recoverable. A load from a failed >>>>> NVDIMM page is such a fault. A *kernel* load is not. So we need to >>>>> distinguish it somehow. >>>> >>>> Sorry for my previous mis-understanding, and i have some questions: >>>> if programs use read,write to check if if memory is valid, does it really >>>> want to cover the poison case? >> >> I don't know. >> >>>> When for such a case, an error is returned, can the program realize it's >>>> hwposion issue not other software error and process correctly? >> >> Again, I don't know. But changing the API like this seems potentialy >> dangerous and needs to be done with care. >> >>>> >>>> if this is the proper action, the original posion flow in current code >>>> from read and write need to change too. >>>> >>> >>> Sorry, another question: >>> When programs use read(2), write(2) as ways to check if memory is valid, >>> does it really want to check if the user page the program provided is >>> valid, not the destination or disk space valid? >> >> They may well be trying to see if their memory is valid. > > Thanks for your reply, and I don't know what to do. > For current code, if user program write to a block device(maybe a test try) > and if its user copy page corrupt when in kernel copy, the process is killed > with a SIGBUS. > And for the page fault case in this thread, the process is error returned.
Can you point me at that SIGBUS code in a current kernel? > > -- > Thanks! > Aili Yao