No you cannot call it until all data has been copied. copy_{to,from}_user fails when a fault happens during the copy process. So you simply cannot try again... It will fault again.
Well, not 100% true. An other running thread (same mm with the process which copies data) can "fix" the faulty adress space. Bad thread....
Ramesh Sudini wrote:Hi,
If copy_from_user returns non zero value, then I do not see any driver(for example PPP) try to copy the remaining data. It treats it as an error scenario.
Why is this? Shouldnt it have a while loop and attempt to copy_from_user till all the data is copied??
I am writing a driver and trying to understand what needs to be done in case it returns a non-zero value? I have huge amount of data to be copied from user space Ex: 3000byte messages.
Can somebody suggest me what is the best I could do...(Please cc me personally with your response)
Thanks
Ramesh