diff --git a/package/opkg/patches/009-remove-upgrade-all.patch b/package/opkg/patches/009-remove-upgrade-all.patch
new file mode 100644
index 0000000000000000000000000000000000000000..17424949460b5b99ed47c6905e7f7d13de6e7f5d
--- /dev/null
+++ b/package/opkg/patches/009-remove-upgrade-all.patch
@@ -0,0 +1,41 @@
+--- a/libopkg/opkg_cmd.c
++++ b/libopkg/opkg_cmd.c
+@@ -508,18 +508,6 @@ opkg_upgrade_cmd(int argc, char **argv)
+ 			    err = -1;
+                }
+ 	  }
+-     } else {
+-	  pkg_vec_t *installed = pkg_vec_alloc();
+-
+-	  pkg_info_preinstall_check();
+-
+-	  pkg_hash_fetch_all_installed(installed);
+-	  for (i = 0; i < installed->len; i++) {
+-	       pkg = installed->pkgs[i];
+-	       if (opkg_upgrade_pkg(pkg))
+-		       err = -1;
+-	  }
+-	  pkg_vec_free(installed);
+      }
+ 
+      if (opkg_configure_packages(NULL))
+@@ -1182,7 +1170,7 @@ opkg_print_architecture_cmd(int argc, ch
+    array for easier maintenance */
+ static opkg_cmd_t cmds[] = {
+      {"update", 0, (opkg_cmd_fun_t)opkg_update_cmd, PFM_DESCRIPTION|PFM_SOURCE},
+-     {"upgrade", 0, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
++     {"upgrade", 1, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
+      {"list", 0, (opkg_cmd_fun_t)opkg_list_cmd, PFM_SOURCE},
+      {"list_installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
+      {"list-installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
+--- a/src/opkg-cl.c
++++ b/src/opkg-cl.c
+@@ -217,7 +217,7 @@ usage()
+ 
+ 	printf("\nPackage Manipulation:\n");
+ 	printf("\tupdate			Update list of available packages\n");
+-	printf("\tupgrade			Upgrade installed packages\n");
++	printf("\tupgrade <pkgs>		Upgrade packages\n");
+ 	printf("\tinstall <pkgs>		Install package(s)\n");
+ 	printf("\tconfigure <pkgs>	Configure unpacked package(s)\n");
+ 	printf("\tremove <pkgs|regexp>	Remove package(s)\n");