diff --git a/modules/block/block.admin.inc b/modules/block/block.admin.inc
index 3981de9..63bb385 100644
--- a/modules/block/block.admin.inc
+++ b/modules/block/block.admin.inc
@@ -274,7 +274,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
   );
 
   // Module-specific block configuration.
-  if ($settings = module_invoke($block->module, 'block_configure', $block->delta)) {
+  if ($settings = module_invoke($block->module, 'block_configure', $block->delta, $form_state)) {
     foreach ($settings as $k => $v) {
       $form['settings'][$k] = $v;
     }
diff --git a/modules/block/block.api.php b/modules/block/block.api.php
index 90e23bd..63dc41a 100644
--- a/modules/block/block.api.php
+++ b/modules/block/block.api.php
@@ -136,6 +136,8 @@ function hook_block_info_alter(&$blocks, $theme, $code_blocks) {
  * @param $delta
  *   Which block is being configured. This is a unique identifier for the block
  *   within the module, defined in hook_block_info().
+ * @param $form_state
+ *   A keyed array containing the current state of the form.
  *
  * @return
  *   A configuration form, if one is needed for your block beyond the standard
@@ -146,7 +148,7 @@ function hook_block_info_alter(&$blocks, $theme, $code_blocks) {
  * @see hook_block_info()
  * @see hook_block_save()
  */
-function hook_block_configure($delta = '') {
+function hook_block_configure($delta = '', &$form_state) {
   // This example comes from node.module.
   $form = array();
   if ($delta == 'recent') {
