Llame a la siguiente función cada vez antes de do_upload
$this->upload->initialize($upload);
Asumir todos los archivos en esta matriz
$_FILES['userfile']['name']
entonces su script se vería así
$this->load->library('upload');
for ($k = 0; $k < count($_FILES['userfile']['name']); $k++) {
$this->upload->initialize($upload); //must reinitialize to get rid of your bug ( i had it as well)
if (!$this->upload->do_upload('userfile',$k)) {
$this->load->view('upload/image_form', $data + array('error'=>$this->upload->display_errors()));
}
$udata[$k] = $this->upload->data(); //gradually build up upload->data()
}