update from torvalds' source