diff -urp webform/webform.module webform-delete_only-2.2/webform.module
--- webform/webform.module	2008-10-06 14:15:05.000000000 +0800
+++ webform-delete_only-2.2/webform.module	2008-10-07 20:28:46.000000000 +0800
@@ -305,7 +305,7 @@ function webform_submission_access($node
     case 'edit':
       return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid));
     case 'delete':
-      return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid)) || user_access('clear webform results');
+      return user_access('delete webform submissions') || (user_access('delete own webform submissions') && ($account->uid == $submission->uid)) || user_access('clear webform results');
     case 'list':
       return user_access('access webform results') || user_access('access webform submissions') || (user_access('access own webform submissions')  && $user->uid);
   }
@@ -315,7 +315,7 @@ function webform_submission_access($node
  * Implementation of hook_perm().
  */
 function webform_perm() {
-  return array("create webforms", "edit own webforms", "edit webforms", "access webform results", "clear webform results", "access own webform submissions", "edit own webform submissions", "edit webform submissions", "use PHP for additional processing");
+  return array("create webforms", "edit own webforms", "delete own webforms", "edit webforms", "delete webforms", "access webform results", "clear webform results", "access own webform submissions", "edit own webform submissions", "delete own webform submissions", "edit webform submissions", "delete webform submissions", "use PHP for additional processing");
 }
 
 /**
@@ -420,10 +420,13 @@ function webform_access($op, $node, $acc
     case "create":
       return user_access("create webforms", $account);
     case "update":
-    case "delete":
       if (user_access("edit webforms", $account) || (user_access("edit own webforms", $account) && ($account->uid == $node->uid))) {
         return TRUE;
       }
+    case "delete":
+      if (user_access("delete webforms", $account) || (user_access("delete own webforms", $account) && ($account->uid == $node->uid))) {
+        return TRUE;
+      }
   }
 }
 
diff -urp webform/webform_report.inc webform-delete_only-2.2/webform_report.inc
--- webform/webform_report.inc	2008-09-21 11:20:51.000000000 +0800
+++ webform-delete_only-2.2/webform_report.inc	2008-10-07 20:28:46.000000000 +0800
@@ -76,6 +76,8 @@ function theme_webform_results_submissio
     $row[] = l(t('View'), "node/$node->nid/submission/$sid");
     if ((user_access("edit own webform submissions") && ($user->uid == $submission->uid)) || user_access("edit webform submissions")) {
       $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit");
+    }
+    if ((user_access("delete own webform submissions") && ($user->uid == $submission->uid)) || user_access("delete webform submissions")) {
       $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => drupal_get_destination()));
     }
     else {
