GM recalls 4 million cars for software update