Index: modules/file/file.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.field.inc,v
retrieving revision 1.29
diff -u -p -r1.29 file.field.inc
--- modules/file/file.field.inc	26 Jul 2010 03:04:29 -0000	1.29
+++ modules/file/file.field.inc	30 Jul 2010 16:02:55 -0000
@@ -522,6 +522,7 @@ function file_field_widget_form(&$form, 
     // a hook_form_alter().
     $elements['#file_upload_title'] = t('Add a new file');
     $elements['#file_upload_description'] = theme('file_upload_help', array('description' => '', 'upload_validators' => $elements[0]['#upload_validators']));
+    $elements['#element_validate'] = array('file_field_element_validate');
   }
 
   return $elements;
@@ -699,6 +700,17 @@ function file_field_widget_process_multi
 }
 
 /**
+ * An #element_validate callback for a group of file_generic fields.
+ *
+ * Update files' sort order, which is necessary since file field implements
+ * custom field behavior and default sorting behavior is never invoked.
+ */
+function file_field_element_validate($element, &$form_state, $form) {
+  $field = field_info_field($element['#field_name']);
+  $form_state['values'][$element['#field_name']][$element['#language']] = _field_sort_items($field, $form_state['values'][$element['#field_name']][$element['#language']]);
+}
+
+/**
  * Returns HTML for an individual file upload widget.
  *
  * @param $variables
