The problem starts at the top.
What I have seen: Someone submits a fix that does not quite work. Linus reverts the commit with a long diatribe on why the user is stupid for what he did. The end result is work was done, but nothing is produced. And, the developer likely gives up.
What could Linus have done instead:
* He could have modified the commit so that it does work.
* He could have sent the submitter ideas on how to fix the code.
* He could have opened an off-line dialogue discussing solutions to the problem.
* He could have had better test procedures so that the submitter would have know there was an error in his commit.
* He could have added a test case so that this commit error does not happen again.
Lots of productive things he could have done instead.