diff --git a/0000-Plugging-a-memory-leak-from-discovery.patch b/0000-Plugging-a-memory-leak-from-discovery.patch deleted file mode 100644 index 358e9c04c4b3a32ef411794750c793088df3647c..0000000000000000000000000000000000000000 --- a/0000-Plugging-a-memory-leak-from-discovery.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c388d9adae20b835731ac98776082c884617467d Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Thu, 30 Aug 2018 15:58:10 -0700 -Subject: [PATCH 45/91] Plugging a memory leak from discovery. - -During discovery the function get_op_params_text_keys() -can allocate a target_alias, but this is never freed. - -Discovered-by: zhangzujian.7@gmail.com ---- - usr/discovery.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/usr/discovery.c b/usr/discovery.c -index 8001af6..2147deb 100644 ---- a/usr/discovery.c -+++ b/usr/discovery.c -@@ -1055,6 +1055,11 @@ static void iscsi_destroy_session(struct iscsi_session *session) - log_error("Could not safely destroy session %d (err %d)", - session->id, rc); - done: -+ if (session->target_alias) { -+ free(session->target_alias); -+ session->target_alias = NULL; -+ } -+ - if (conn->socket_fd >= 0) { - ipc->ctldev_close(); - conn->socket_fd = -1; --- -1.8.3.1 - diff --git a/0001-Fix-bug-in-error-message-when-reading-sysfs-numbers.patch b/0001-Fix-bug-in-error-message-when-reading-sysfs-numbers.patch deleted file mode 100644 index dab2f8db0b0af897571b5388bee4071c4ffb0415..0000000000000000000000000000000000000000 --- a/0001-Fix-bug-in-error-message-when-reading-sysfs-numbers.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 8bf04a094e572c56d4f8bd30ff064c84c75a0247 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Tue, 25 Sep 2018 09:53:55 -0700 -Subject: [PATCH 54/91] Fix bug in error message when reading sysfs numbers. - -The message printed when ENOENT was returned for -a number-type sysfs value was missing the attribute -name parameter. ---- - libopeniscsiusr/sysfs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c -index c4f89a3..5e6532e 100644 ---- a/libopeniscsiusr/sysfs.c -+++ b/libopeniscsiusr/sysfs.c -@@ -237,7 +237,7 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx, - "Failed to read '%s': " - "File '%s' does not exists, using ", - "default value %lld", -- file_path, default_value); -+ prop_name, file_path, default_value); - *val = default_value; - goto out; - } --- -1.8.3.1 - diff --git a/0026-change-iscsi-iqn-default-value.patch b/0001-change-iscsi-iqn-default-value.patch similarity index 65% rename from 0026-change-iscsi-iqn-default-value.patch rename to 0001-change-iscsi-iqn-default-value.patch index 8a5ecc72027a49092d8f9ccbe419485b20523324..2cf6ca43dd7557170ae0840c1bee9b321654f7f6 100644 --- a/0026-change-iscsi-iqn-default-value.patch +++ b/0001-change-iscsi-iqn-default-value.patch @@ -1,4 +1,4 @@ -From 2fb5d2dbcfdc052881749e22268c06b1402257a7 Mon Sep 17 00:00:00 2001 +From 50b9f68b960360eab065b63d6660b1f70f227c13 Mon Sep 17 00:00:00 2001 From: pengyeqing Date: Sat, 26 Jan 2019 22:09:24 +0800 Subject: [PATCH] iscsi-initiator-utils: change iscsi iqn default value @@ -7,35 +7,38 @@ reason:change iscsi iqn default value Signed-off-by: pengyeqing --- - doc/iscsi-iname.8 | 2 +- + doc/iscsi-iname.8 | 4 ++-- utils/iscsi-iname.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/iscsi-iname.8 b/doc/iscsi-iname.8 -index a55d666d1af3..dd77ed9f3165 100644 +index 6a413f6..34c47b4 100644 --- a/doc/iscsi-iname.8 +++ b/doc/iscsi-iname.8 -@@ -14,7 +14,7 @@ generates a unique iSCSI node name on every invocation. +@@ -14,8 +14,8 @@ generates a unique iSCSI node name on every invocation. Display help .TP .BI [-p=]\fIprefix\fP --Use the prefix passed in instead of the default "iqn.2005-03.org.open-iscsi" +-Use the prefix passed in instead of the default "iqn.2016-04.com.open-iscsi" +- +Use the prefix passed in instead of the default "iqn.2012-01.com.openeuler" - ++ .SH AUTHORS Open-iSCSI project + .br diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c -index cb2f6c8..926bf3a 100644 +index da850dc..08161f4 100644 --- a/utils/iscsi-iname.c +++ b/utils/iscsi-iname.c -@@ -73,7 +73,7 @@ main(int argc, char *argv[]) +@@ -80,7 +80,7 @@ main(int argc, char *argv[]) exit(0); } } else { -- prefix = "iqn.2005-03.org.open-iscsi"; +- prefix = "iqn.2016-04.com.open-iscsi"; + prefix = "iqn.2012-01.com.openeuler"; } /* try to feed some entropy from the pool to MD5 in order to get -- 1.8.3.1 + diff --git a/0002-Do-not-allow-multiple-sessions-when-nr_sessions-1.patch b/0002-Do-not-allow-multiple-sessions-when-nr_sessions-1.patch deleted file mode 100644 index f3ec03c6d1301a34cab58c6d6ce043e3e3042afa..0000000000000000000000000000000000000000 --- a/0002-Do-not-allow-multiple-sessions-when-nr_sessions-1.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a37c4295a2e3f8712921a52db0d35d3506efb19b Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Thu, 4 Oct 2018 16:26:26 -0700 -Subject: [PATCH 60/91] Do not allow multiple sessions when nr_sessions=1 - -If a request is made to login to a target, creating -a session, then another request is submitted so quickly -that the first one has not completed, both requests -can succeed, despite having nr_sessions=1 configured. - -Only allow multiple login requests if nr_sessions is -greater than 1. ---- - usr/session_mgmt.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/usr/session_mgmt.c b/usr/session_mgmt.c -index 596085b..0500f15 100644 ---- a/usr/session_mgmt.c -+++ b/usr/session_mgmt.c -@@ -189,9 +189,11 @@ int iscsi_login_portal(void *data, struct list_head *list, struct node_rec *rec) - - /* - * Ensure the record's 'multiple' flag is set so __iscsi_login_portal -- * will allow multiple logins. -+ * will allow multiple logins, but only if configured for more -+ * than one - */ -- rec->session.multiple = 1; -+ if (rec->session.nr_sessions > 1) -+ rec->session.multiple = 1; - for (i = session_count; i < rec->session.nr_sessions; ++i) { - log_debug(1, "%s: Creating session %d/%d", rec->iface.name, - i + 1, rec->session.nr_sessions); --- -1.8.3.1 - diff --git a/0027-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch b/0002-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch similarity index 100% rename from 0027-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch rename to 0002-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch diff --git a/0003-Fix-possible-discovery-hang-when-timing-out.patch b/0003-Fix-possible-discovery-hang-when-timing-out.patch deleted file mode 100644 index 80b911ed26554571a0a43e621cc60766957e029b..0000000000000000000000000000000000000000 --- a/0003-Fix-possible-discovery-hang-when-timing-out.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 4ee991b81194a7e3ebd7ff6ec4efc5509932389d Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Tue, 14 May 2019 14:12:25 -0700 -Subject: [PATCH 91/91] Fix possible discovery hang when timing out - -If session reopening failed during discovery, the CPU -could peg at 100% because the code that gives up when -tretires are exhausted was not setting an error -return value. ---- - usr/discovery.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/usr/discovery.c b/usr/discovery.c -index 2147deb..199c160 100644 ---- a/usr/discovery.c -+++ b/usr/discovery.c -@@ -1355,6 +1355,7 @@ reconnect: - if (--session->reopen_cnt < 0) { - log_error("connection login retries (reopen_max) %d exceeded", - config->reopen_max); -+ rc = ISCSI_ERR_PDU_TIMEOUT; - goto login_failed; - } - --- -1.8.3.1 - diff --git a/0028-add-sleep-for-service.patch b/0003-add-sleep-for-service.patch similarity index 31% rename from 0028-add-sleep-for-service.patch rename to 0003-add-sleep-for-service.patch index 0c4dc5e465b113bb36890e352fc33430bd9a69a3..bc26f70b010a74e22c2b209ed7a64e69d7546cb8 100644 --- a/0028-add-sleep-for-service.patch +++ b/0003-add-sleep-for-service.patch @@ -1,4 +1,4 @@ -From 42c30d191e3da86f543f665d49bc84a68ca25bf7 Mon Sep 17 00:00:00 2001 +From 83126f4ab8c67704d779d9d15b2e1227d11209ff Mon Sep 17 00:00:00 2001 From: pengyeqing Date: Sat, 26 Jan 2019 22:44:59 +0800 Subject: [PATCH] iscsi-initiator-utils: add sleep for service @@ -6,22 +6,39 @@ Subject: [PATCH] iscsi-initiator-utils: add sleep for service add sleep for service Signed-off-by: pengyeqing +Signed-off-by: wuguanghao --- - etc/systemd/iscsid.service | 1 + - 1 file changed, 1 insertion(+) + etc/systemd/iscsid.service | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service -index 653dd08..ecc5f65 100644 +index 4fef168..f3f8c65 100644 --- a/etc/systemd/iscsid.service +++ b/etc/systemd/iscsid.service -@@ -10,6 +10,7 @@ Before=remote-fs-pre.target - Type=forking - PIDFile=/var/run/iscsid.pid - ExecStart=/usr/sbin/iscsid -+ExecStartPost=/usr/bin/sleep 1 - ExecStop=/sbin/iscsiadm -k 0 2 - +@@ -1,17 +1,14 @@ + [Unit] + Description=Open-iSCSI + Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8) +-DefaultDependencies=no +-After=network.target iscsiuio.service +-Before=remote-fs-pre.target ++After=network.target NetworkManager-wait-online.service iscsiuio.service tgtd.service targetcli.service + + [Service] +-Type=notify +-NotifyAccess=main +-ExecStart=/sbin/iscsid -f +-KillMode=mixed +-Restart=on-failure ++Type=forking ++PIDFile=/var/run/iscsid.pid ++ExecStart=/sbin/iscsid ++ExecStopPost=/usr/bin/sleep 1 ++ExecStop=/sbin/iscsiadm -k 0 2 + [Install] + WantedBy=multi-user.target +-Also=iscsid.socket -- 1.8.3.1 diff --git a/0004-Resource-leak-returning-without-freeing-netdev.patch b/0004-Resource-leak-returning-without-freeing-netdev.patch deleted file mode 100644 index d057be3447c16ab8324ae4f135ac8becb30ffb2e..0000000000000000000000000000000000000000 --- a/0004-Resource-leak-returning-without-freeing-netdev.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e13d2fe2b39d6a69b7a7c82cdc3185996bceaca2 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 11:06:07 -0700 -Subject: [PATCH 18/43] Resource leak: returning without freeing netdev - ---- - usr/iscsi_net_util.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/usr/iscsi_net_util.c b/usr/iscsi_net_util.c -index 6339082..a32b49c 100644 ---- a/usr/iscsi_net_util.c -+++ b/usr/iscsi_net_util.c -@@ -271,7 +271,8 @@ int net_setup_netdev(char *netdev, char *local_ip, char *mask, char *gateway, - if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { - log_error("Could not open socket to manage network " - "(err %d - %s)", errno, strerror(errno)); -- return errno; -+ ret = errno; -+ goto done; - } - - /* Bring up NIC with correct address - unless it -@@ -389,7 +390,8 @@ int net_setup_netdev(char *netdev, char *local_ip, char *mask, char *gateway, - ret = 0; - - done: -- close(sock); -+ if (sock >= 0) -+ close(sock); - if (vlan_id) - free(netdev); - return ret; --- -2.21.0 diff --git a/0029-not-send-stop-message-if-iscsid-absent.patch b/0004-not-send-stop-message-if-iscsid-absent.patch similarity index 94% rename from 0029-not-send-stop-message-if-iscsid-absent.patch rename to 0004-not-send-stop-message-if-iscsid-absent.patch index 9c4663ef4e4f780f8f10abbf00799e33ff1620ab..da09de5f8472b2614b10b744ad86a18b413c2948 100644 --- a/0029-not-send-stop-message-if-iscsid-absent.patch +++ b/0004-not-send-stop-message-if-iscsid-absent.patch @@ -1,4 +1,4 @@ -From 1412b27dc88f5f2cdda5cb1cf0d2a9313313a390 Mon Sep 17 00:00:00 2001 +From d99f5bb9a8fcd217262d765b096df30724c774e9 Mon Sep 17 00:00:00 2001 From: pengyeqing Date: Mon, 20 Jan 2020 19:43:52 +0800 Subject: [PATCH] iscsi-initiator-utils: not send stop message if iscsid absent @@ -10,12 +10,12 @@ Signed-off-by: pengyeqing 2 files changed, 73 insertions(+) diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service -index 2566b49..44a0363 100644 +index f3f8c65..2cce190 100644 --- a/etc/systemd/iscsid.service +++ b/etc/systemd/iscsid.service @@ -9,6 +9,8 @@ PIDFile=/var/run/iscsid.pid - ExecStart=/usr/sbin/iscsid - ExecStartPost=/usr/bin/sleep 1 + ExecStart=/sbin/iscsid + ExecStopPost=/usr/bin/sleep 1 ExecStop=/sbin/iscsiadm -k 0 2 +Restart=always +RestartSec=2s @@ -23,7 +23,7 @@ index 2566b49..44a0363 100644 [Install] WantedBy=multi-user.target diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c -index 4796c2f..8b5d5fe 100644 +index f2bd721..b386abe 100644 --- a/usr/iscsiadm.c +++ b/usr/iscsiadm.c @@ -69,6 +69,8 @@ static char program_name[] = "iscsiadm"; diff --git a/0005-Out-of-bounds-write-Overrunning-array-link_target.patch b/0005-Out-of-bounds-write-Overrunning-array-link_target.patch deleted file mode 100644 index bc738af64c58b24b34acf170dcb94133edd3c6d1..0000000000000000000000000000000000000000 --- a/0005-Out-of-bounds-write-Overrunning-array-link_target.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 007d7832c631409e41bf5c473ca5dc7d114a67cb Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 11:13:44 -0700 -Subject: [PATCH 19/43] Out-of-bounds-write: Overrunning array link_target - ---- - usr/sysfs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/usr/sysfs.c b/usr/sysfs.c -index 48f3825..b3102f0 100644 ---- a/usr/sysfs.c -+++ b/usr/sysfs.c -@@ -134,7 +134,7 @@ int sysfs_resolve_link(char *devpath, size_t size) - - strlcpy(link_path, sysfs_path, sizeof(link_path)); - strlcat(link_path, devpath, sizeof(link_path)); -- len = readlink(link_path, link_target, sizeof(link_target)); -+ len = readlink(link_path, link_target, sizeof(link_target) - 1); - if (len <= 0) - return -1; - link_target[len] = '\0'; --- -2.21.0 - diff --git a/0030-iscsid-SIGTERM-syncprocess-hang.patch b/0005-iscsid-SIGTERM-syncprocess-hang.patch similarity index 100% rename from 0030-iscsid-SIGTERM-syncprocess-hang.patch rename to 0005-iscsid-SIGTERM-syncprocess-hang.patch diff --git a/0005-restart-log-daemon-when-exited-abnormally.patch.bak b/0005-restart-log-daemon-when-exited-abnormally.patch.bak new file mode 100644 index 0000000000000000000000000000000000000000..63927d204b7dffe9dbd71901eeb4384e1db3bdbc --- /dev/null +++ b/0005-restart-log-daemon-when-exited-abnormally.patch.bak @@ -0,0 +1,296 @@ +From 5a5e63101a9428567767efb50fe5cd60f8f39cea Mon Sep 17 00:00:00 2001 +From: wangjufeng +Date: Sat, 20 Oct 2018 14:50:28 +0800 +Subject: [PATCH] tt + +--- + usr/event_poll.c | 17 +++++++- + usr/iscsid.c | 2 +- + usr/log.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + usr/log.h | 6 +++ + 4 files changed, 144 insertions(+), 5 deletions(-) + +diff --git a/usr/event_poll.c b/usr/event_poll.c +index 4cf4ce2..7b70cb7 100644 +--- a/usr/event_poll.c ++++ b/usr/event_poll.c +@@ -151,8 +151,11 @@ void event_loop_exit(queue_task_t *qtask) + + void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) + { +- struct pollfd poll_array[POLL_MAX]; ++ struct pollfd poll_array[POLL_MAX + 1]; + int res, has_shutdown_children = 0; ++ int log_timerfd = log_get_timerfd(); ++ int pool_count = POLL_MAX; ++ int poll_timerfd_index = -1; + sigset_t sigset; + int sig_fd; + +@@ -174,6 +177,13 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) + poll_array[POLL_ALARM].fd = sig_fd; + poll_array[POLL_ALARM].events = POLLIN; + ++ if (log_timerfd >= 0) { ++ poll_array[POLL_MAX].fd = log_timerfd; ++ poll_array[POLL_MAX].events = POLLIN; ++ poll_timerfd_index = POLL_MAX; ++ pool_count += 1; ++ } ++ + event_loop_stop = 0; + while (1) { + if (event_loop_stop) { +@@ -188,7 +198,7 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) + /* Runs actors and may set alarm for future actors */ + actor_poll(); + +- res = poll(poll_array, POLL_MAX, reap_count ? REAP_WAKEUP : -1); ++ res = poll(poll_array, pool_count, reap_count ? REAP_WAKEUP : -1); + + if (res > 0) { + log_debug(6, "poll result %d", res); +@@ -198,6 +208,9 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) + if (poll_array[POLL_IPC].revents) + mgmt_ipc_handle(mgmt_ipc_fd); + ++ if(log_timerfd >= 0 && poll_array[poll_timerfd_index].revents) ++ log_watchdog_handle(); ++ + if (poll_array[POLL_ALARM].revents) { + struct signalfd_siginfo si; + +diff --git a/usr/iscsid.c b/usr/iscsid.c +index c9ab9eb..56689e5 100644 +--- a/usr/iscsid.c ++++ b/usr/iscsid.c +@@ -62,7 +62,6 @@ struct iscsi_daemon_config daemon_config; + struct iscsi_daemon_config *dconfig = &daemon_config; + + static char program_name[] = "iscsid"; +-static pid_t log_pid; + static gid_t gid; + static int daemonize = 1; + static int mgmt_ipc_fd; +@@ -307,6 +306,7 @@ static void iscsid_shutdown(void) + log_debug(1, "daemon stopping"); + log_close(log_pid); + } ++ log_close_watchdog_timer(); + } + + static void catch_signal(int signo) +diff --git a/usr/log.c b/usr/log.c +index 6e16e7c..c225bdc 100644 +--- a/usr/log.c ++++ b/usr/log.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + #include "iscsi_util.h" + #include "log.h" +@@ -35,6 +36,13 @@ char *log_name; + int log_level = 0; + struct logarea *la = NULL; + ++pid_t log_pid = -1; ++static int default_watchdog_timeout = 4; ++static char program_name[] = "iscsid"; ++static int watchdog_timerfd = -1; ++static int last_watchdog_count = 0; ++static int watchdog_noupdate_count = 0; ++ + static int log_stop_daemon = 0; + static void (*log_func)(int prio, void *priv, const char *fmt, va_list ap); + static void *log_func_priv; +@@ -142,6 +150,7 @@ static int logarea_init (int size) + la->shmid_buff = shmid; + la->ops[0].sem_num = 0; + la->ops[0].sem_flg = 0; ++ la->watchdog_count = 0; + + return 0; + +@@ -421,6 +430,105 @@ static void __log_close(void) + } + } + ++static int log_restart_daemon(void) ++{ ++ log_close(log_pid); ++ log_pid = log_init(program_name, DEFAULT_AREA_SIZE, log_do_log_daemon, NULL); ++ if (log_pid < 0) ++ return -1; ++ return 0; ++} ++ ++static int log_watchdog_setup(void) ++{ ++ int r; ++ struct itimerspec new_value; ++ uint32_t period_inus = 1 * 1000000; /*1 second*/ ++ uint32_t seconds; ++ uint32_t nanoseconds; ++ if (log_stop_daemon || watchdog_timerfd >= 0) ++ return 0; ++ ++ watchdog_timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC); ++ if (watchdog_timerfd < 0) { ++ syslog(LOG_ERR, "Create watchdog timer failed. errno: %d", errno); ++ return -1; ++ } ++ seconds = period_inus / 1000000; ++ nanoseconds = (period_inus - (seconds * 1000000)) * 1000; ++ new_value.it_interval.tv_sec = seconds; ++ new_value.it_interval.tv_nsec = nanoseconds; ++ new_value.it_value.tv_sec = seconds; ++ new_value.it_value.tv_nsec = nanoseconds; ++ ++ r = timerfd_settime(watchdog_timerfd, 0, &new_value, NULL); ++ if (r < 0) { ++ syslog(LOG_ERR, "Set watchdog timer failed. errno: %d", errno); ++ log_close_watchdog_timer(); ++ return -1; ++ } ++ return 0; ++} ++ ++static int log_read_comm_frpm_pid(pid_t pid, char *buffer, int len) ++{ ++ char comm_file[256]; ++ char comm_content[1024]; ++ int r; ++ FILE *fd = NULL; ++ buffer[0] = '\0'; ++ snprintf(comm_file, sizeof(comm_file), "/proc/%i/comm", pid); ++ fd = fopen(comm_file, "r"); ++ if (!fd) ++ return -1; ++ if (!fgets(buffer, len, fd)) { ++ log_warning("Can not read file. File:%s.", comm_file); ++ fclose(fd); ++ fd = NULL; ++ return -1; ++ } ++ fclose(fd); ++ fd = NULL; ++ return 0; ++} ++ ++int log_get_timerfd(void) ++{ ++ return watchdog_timerfd; ++} ++ ++void log_close_watchdog_timer(void) ++{ ++ if(watchdog_timerfd >= 0) { ++ close(watchdog_timerfd); ++ watchdog_timerfd = -1; ++ } ++} ++ ++void log_watchdog_handle(void) ++{ ++ uint64_t expir = 0; ++ int len; ++ int new_watchdog_count; ++ len = read(watchdog_timerfd, &expir, sizeof(uint64_t)); ++ if(len > 0 && expir > 0) { ++ if (la && !log_stop_daemon) { ++ new_watchdog_count = la->watchdog_count; ++ if (new_watchdog_count == last_watchdog_count) { ++ watchdog_noupdate_count++; ++ if (watchdog_noupdate_count >= default_watchdog_timeout) { ++ watchdog_noupdate_count = 0; ++ syslog(LOG_ERR, "log daemon is not alive, try to restart."); ++ log_restart_daemon(); ++ } ++ } else { ++ watchdog_noupdate_count = 0; ++ last_watchdog_count = new_watchdog_count; ++ } ++ } ++ } ++} ++ + int log_init(char *program_name, int size, + void (*func)(int prio, void *priv, const char *fmt, va_list ap), + void *priv) +@@ -443,6 +551,8 @@ int log_init(char *program_name, int size, + return -1; + } + ++ log_watchdog_setup(); ++ + pid = fork(); + if (pid < 0) { + syslog(LOG_ERR, "starting logger failed"); +@@ -463,6 +573,8 @@ int log_init(char *program_name, int size, + sigaction(SIGTERM, &sa_new, &sa_old ); + + while(1) { ++ if (la) ++ la->watchdog_count++; + log_flush(); + sleep(1); + +@@ -487,7 +599,15 @@ void log_close(pid_t pid) + } + + if (pid > 0) { +- kill(pid, SIGTERM); +- waitpid(pid, &status, 0); ++ char comm[1024]; ++ int r; ++ r = log_read_comm_frpm_pid(pid, comm, sizeof(comm)); ++ if (!r && strstr(comm, "iscsid")) { ++ syslog(LOG_WARNING, "Send SIGTERM to iSCSI logger, pid=%i.", pid); ++ kill(pid, SIGTERM); ++ waitpid(pid, &status, 0); ++ } else { ++ syslog(LOG_WARNING, "iSCSI logger with pid=%i already exited.", pid); ++ } + } + } +diff --git a/usr/log.h b/usr/log.h +index c548791..6affd3b 100644 +--- a/usr/log.h ++++ b/usr/log.h +@@ -28,6 +28,7 @@ + + #include + #include ++#include + #include "iscsid.h" + + union semun { +@@ -42,6 +43,7 @@ union semun { + #define MAX_MSG_SIZE 256 + + extern int log_level; ++extern pid_t log_pid; + + struct logmsg { + short int prio; +@@ -62,10 +64,14 @@ struct logarea { + struct sembuf ops[1]; + int semid; + union semun semarg; ++ uint64_t watchdog_count; + }; + + extern struct logarea *la; + ++extern int log_get_timerfd(void); ++extern void log_close_watchdog_time(void); ++extern void log_watchdog_handle(void); + extern int log_init(char *program_name, int size, + void (*func)(int prio, void *priv, const char *fmt, va_list ap), + void *priv); +-- +1.8.3.1 + diff --git a/0006-Resource-leak-Variable-rec-going-out-of-scope-leaks.patch b/0006-Resource-leak-Variable-rec-going-out-of-scope-leaks.patch deleted file mode 100644 index 207bc80412102b5d99c65e7f70b08ea74c042d0b..0000000000000000000000000000000000000000 --- a/0006-Resource-leak-Variable-rec-going-out-of-scope-leaks.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0db12353efea69309a6a92f30f4e063b142359c4 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 11:27:07 -0700 -Subject: [PATCH 20/43] Resource leak: Variable rec going out of scope leaks - the storage it points to - ---- - usr/iscsiadm.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c -index 8de7a41..2ce6ae7 100644 ---- a/usr/iscsiadm.c -+++ b/usr/iscsiadm.c -@@ -1044,7 +1044,7 @@ static int add_static_rec(int *found, char *targetname, int tpgt, - if (rc) { - log_error("Could not read iface %s. Error %d", - iface->name, rc); -- return rc; -+ goto free_drec; - } - - iface_copy(&rec->iface, iface); -@@ -1057,6 +1057,7 @@ static int add_static_rec(int *found, char *targetname, int tpgt, - rec->iface.transport_name, iface_str(&rec->iface), - ip, port, tpgt, targetname); - } -+free_drec: - free(drec); - free_rec: - free(rec); --- -2.19.1 - diff --git a/0032-restart-log-daemon-when-exited-abnormally.patch b/0006-restart-log-daemon-when-exited-abnormally.patch similarity index 86% rename from 0032-restart-log-daemon-when-exited-abnormally.patch rename to 0006-restart-log-daemon-when-exited-abnormally.patch index 76b09fdb09d6063a4bae3efd4526be2f9ab7a847..9900913ffc859f2c876ef211db0ea3ffe54aecb3 100644 --- a/0032-restart-log-daemon-when-exited-abnormally.patch +++ b/0006-restart-log-daemon-when-exited-abnormally.patch @@ -1,4 +1,4 @@ -From 10886ac1cf645b7eefb113a03eb31ef7a49f5910 Mon Sep 17 00:00:00 2001 +From 88767cf8e6c62df3260e895664bfe7094e55d565 Mon Sep 17 00:00:00 2001 From: wangjufeng Date: Sat, 20 Oct 2018 14:50:28 +0800 Subject: [PATCH] tt @@ -6,15 +6,15 @@ Subject: [PATCH] tt --- usr/event_poll.c | 17 +++++++- usr/iscsid.c | 2 +- - usr/log.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + usr/log.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- usr/log.h | 6 +++ - 4 files changed, 140 insertions(+), 5 deletions(-) + 4 files changed, 144 insertions(+), 5 deletions(-) diff --git a/usr/event_poll.c b/usr/event_poll.c -index ac25044..a3a3676 100644 +index 4cf4ce2..7b70cb7 100644 --- a/usr/event_poll.c +++ b/usr/event_poll.c -@@ -134,8 +134,11 @@ void event_loop_exit(queue_task_t *qtask) +@@ -151,8 +151,11 @@ void event_loop_exit(queue_task_t *qtask) void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) { @@ -27,7 +27,7 @@ index ac25044..a3a3676 100644 sigset_t sigset; int sig_fd; -@@ -157,6 +160,13 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) +@@ -174,6 +177,13 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) poll_array[POLL_ALARM].fd = sig_fd; poll_array[POLL_ALARM].events = POLLIN; @@ -41,7 +41,7 @@ index ac25044..a3a3676 100644 event_loop_stop = 0; while (1) { if (event_loop_stop) { -@@ -171,7 +181,7 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) +@@ -188,7 +198,7 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) /* Runs actors and may set alarm for future actors */ actor_poll(); @@ -50,7 +50,7 @@ index ac25044..a3a3676 100644 if (res > 0) { log_debug(6, "poll result %d", res); -@@ -181,6 +191,9 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) +@@ -198,6 +208,9 @@ void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd) if (poll_array[POLL_IPC].revents) mgmt_ipc_handle(mgmt_ipc_fd); @@ -61,10 +61,10 @@ index ac25044..a3a3676 100644 struct signalfd_siginfo si; diff --git a/usr/iscsid.c b/usr/iscsid.c -index 8202bc9..6329644 100644 +index c9ab9eb..56689e5 100644 --- a/usr/iscsid.c +++ b/usr/iscsid.c -@@ -59,7 +59,6 @@ struct iscsi_daemon_config daemon_config; +@@ -62,7 +62,6 @@ struct iscsi_daemon_config daemon_config; struct iscsi_daemon_config *dconfig = &daemon_config; static char program_name[] = "iscsid"; @@ -72,7 +72,7 @@ index 8202bc9..6329644 100644 static gid_t gid; static int daemonize = 1; static int mgmt_ipc_fd; -@@ -302,6 +301,7 @@ static void iscsid_shutdown(void) +@@ -307,6 +306,7 @@ static void iscsid_shutdown(void) log_debug(1, "daemon stopping"); log_close(log_pid); } @@ -81,7 +81,7 @@ index 8202bc9..6329644 100644 static void catch_signal(int signo) diff --git a/usr/log.c b/usr/log.c -index b730642..35d5564 100644 +index 6e16e7c..c225bdc 100644 --- a/usr/log.c +++ b/usr/log.c @@ -18,6 +18,7 @@ @@ -92,21 +92,21 @@ index b730642..35d5564 100644 #include "iscsi_util.h" #include "log.h" -@@ -33,6 +34,13 @@ - - char *log_name; +@@ -35,6 +36,13 @@ char *log_name; int log_level = 0; + struct logarea *la = NULL; + +pid_t log_pid = -1; -+ +static int default_watchdog_timeout = 4; +static char program_name[] = "iscsid"; +static int watchdog_timerfd = -1; +static int last_watchdog_count = 0; +static int watchdog_noupdate_count = 0; - ++ static int log_stop_daemon = 0; static void (*log_func)(int prio, void *priv, const char *fmt, va_list ap); -@@ -141,6 +149,7 @@ static int logarea_init (int size) + static void *log_func_priv; +@@ -142,6 +150,7 @@ static int logarea_init (int size) la->shmid_buff = shmid; la->ops[0].sem_num = 0; la->ops[0].sem_flg = 0; @@ -114,7 +114,7 @@ index b730642..35d5564 100644 return 0; -@@ -414,6 +423,105 @@ static void __log_close(void) +@@ -421,6 +430,105 @@ static void __log_close(void) } } @@ -220,7 +220,7 @@ index b730642..35d5564 100644 int log_init(char *program_name, int size, void (*func)(int prio, void *priv, const char *fmt, va_list ap), void *priv) -@@ -436,6 +540,8 @@ int log_init(char *program_name, int size, +@@ -443,6 +551,8 @@ int log_init(char *program_name, int size, return -1; } @@ -229,7 +229,7 @@ index b730642..35d5564 100644 pid = fork(); if (pid < 0) { syslog(LOG_ERR, "starting logger failed"); -@@ -456,6 +562,8 @@ int log_init(char *program_name, int size, +@@ -463,6 +573,8 @@ int log_init(char *program_name, int size, sigaction(SIGTERM, &sa_new, &sa_old ); while(1) { @@ -238,7 +238,7 @@ index b730642..35d5564 100644 log_flush(); sleep(1); -@@ -480,7 +588,15 @@ void log_close(pid_t pid) +@@ -487,7 +599,15 @@ void log_close(pid_t pid) } if (pid > 0) { @@ -257,7 +257,7 @@ index b730642..35d5564 100644 } } diff --git a/usr/log.h b/usr/log.h -index 486a08e..d4f8b80 100644 +index c548791..f0c88c7 100644 --- a/usr/log.h +++ b/usr/log.h @@ -28,6 +28,7 @@ @@ -283,7 +283,7 @@ index 486a08e..d4f8b80 100644 + uint64_t watchdog_count; }; - struct logarea *la; + extern struct logarea *la; +extern int log_get_timerfd(void); +extern void log_close_watchdog_timer(void); diff --git a/0007-Out-of-bounds-write-Overrunning-array-link_target.patch b/0007-Out-of-bounds-write-Overrunning-array-link_target.patch deleted file mode 100644 index 4415d89e245bae3173a89687ab7434cb43017d0c..0000000000000000000000000000000000000000 --- a/0007-Out-of-bounds-write-Overrunning-array-link_target.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c03fbc1a112d3f808512351a62f4c5f593694003 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 11:29:56 -0700 -Subject: [PATCH 21/43] Out-of-bounds write: Overrunning array link_target - ---- - usr/sysfs.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/usr/sysfs.c b/usr/sysfs.c -index b3102f0..2488160 100644 ---- a/usr/sysfs.c -+++ b/usr/sysfs.c -@@ -225,7 +225,7 @@ struct sysfs_device *sysfs_device_get(const char *devpath) - strlcpy(link_path, sysfs_path, sizeof(link_path)); - strlcat(link_path, dev->devpath, sizeof(link_path)); - strlcat(link_path, "/subsystem", sizeof(link_path)); -- len = readlink(link_path, link_target, sizeof(link_target)); -+ len = readlink(link_path, link_target, sizeof(link_target) - 1); - if (len > 0) { - /* get subsystem from "subsystem" link */ - link_target[len] = '\0'; -@@ -255,7 +255,7 @@ struct sysfs_device *sysfs_device_get(const char *devpath) - strlcpy(link_path, sysfs_path, sizeof(link_path)); - strlcat(link_path, dev->devpath, sizeof(link_path)); - strlcat(link_path, "/driver", sizeof(link_path)); -- len = readlink(link_path, link_target, sizeof(link_target)); -+ len = readlink(link_path, link_target, sizeof(link_target) - 1); - if (len > 0) { - link_target[len] = '\0'; - dbg("driver link '%s' points to '%s'", link_path, link_target); -@@ -363,7 +363,7 @@ char *sysfs_attr_get_value(const char *devpath, const char *attr_name) - int len; - const char *pos; - -- len = readlink(path_full, link_target, sizeof(link_target)); -+ len = readlink(path_full, link_target, sizeof(link_target) - 1); - if (len > 0) { - link_target[len] = '\0'; - pos = strrchr(link_target, '/'); --- -2.19.1 - diff --git a/0033-check-initiator-name-out-of-range.patch b/0007-check-initiator-name-out-of-range.patch similarity index 100% rename from 0033-check-initiator-name-out-of-range.patch rename to 0007-check-initiator-name-out-of-range.patch diff --git a/0008-Buffer-not-null-terminated-Calling-strncpy.patch b/0008-Buffer-not-null-terminated-Calling-strncpy.patch deleted file mode 100644 index 528abd57b639fc684e926a21eb8ab0b2ae73bb6b..0000000000000000000000000000000000000000 --- a/0008-Buffer-not-null-terminated-Calling-strncpy.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 26bfa31349c410cacd22f9e8ea2ef4a82b221f13 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 11:44:18 -0700 -Subject: [PATCH 22/43] Buffer not null terminated: Calling strncpy with a - maximum size argument on destination array might leave the destination string - unterminated - ---- - usr/iscsi_sysfs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c -index f79a1af..418f51b 100644 ---- a/usr/iscsi_sysfs.c -+++ b/usr/iscsi_sysfs.c -@@ -464,7 +464,7 @@ int iscsi_sysfs_get_flashnode_info(struct flashnode_rec *fnode, - log_debug(7, "could not get transport name for host%d", - host_no); - else -- strncpy(fnode->transport_name, t->name, -+ strlcpy(fnode->transport_name, t->name, - ISCSI_TRANSPORT_NAME_MAXLEN); - - snprintf(sess_id, sizeof(sess_id), ISCSI_FLASHNODE_SESS, host_no, --- -2.21.0 - diff --git a/0034-do-not-sync-session-when-a-session-is-already-created.patch b/0008-do-not-sync-session-when-a-session-is-already-created.patch similarity index 100% rename from 0034-do-not-sync-session-when-a-session-is-already-created.patch rename to 0008-do-not-sync-session-when-a-session-is-already-created.patch diff --git a/0009-Resource-leak-Variable-startup_cmd-going-out-of-scop.patch b/0009-Resource-leak-Variable-startup_cmd-going-out-of-scop.patch deleted file mode 100644 index 0f6daaa356e862e097e7df32ea1035e68813f7d7..0000000000000000000000000000000000000000 --- a/0009-Resource-leak-Variable-startup_cmd-going-out-of-scop.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 5799a5a711a0347e353cfb61b8ea33eb9d38541e Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 12:03:59 -0700 -Subject: [PATCH 24/43] Resource leak: Variable startup_cmd going out of scope - leaks the storage it point to. - ---- - usr/iscsid_req.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/usr/iscsid_req.c b/usr/iscsid_req.c -index b6940db..427e894 100644 ---- a/usr/iscsid_req.c -+++ b/usr/iscsid_req.c -@@ -55,6 +55,8 @@ static void iscsid_startup(void) - if (system(startup_cmd) < 0) - log_error("Could not execute '%s' (err %d)", - startup_cmd, errno); -+ -+ free(startup_cmd); - } - - #define MAXSLEEP 128 --- -2.21.0 - diff --git a/0035-fix-default-file-corrupt.patch b/0009-fix-default-file-corrupt.patch similarity index 76% rename from 0035-fix-default-file-corrupt.patch rename to 0009-fix-default-file-corrupt.patch index 6256f1eeb56d873503cd127ae97f293bebd7bd3d..9da7a004a257ebf7cdd64610b84cd8b54ca2ccbb 100644 --- a/0035-fix-default-file-corrupt.patch +++ b/0009-fix-default-file-corrupt.patch @@ -1,17 +1,17 @@ -From 9c5a21d14a2dff91b56574842218cc11e7457dfa Mon Sep 17 00:00:00 2001 +From 64fe2b6749cb3d53444d9a5663d8e6c852d5aa17 Mon Sep 17 00:00:00 2001 From: openEuler Buildteam Date: Wed, 8 Jan 2020 04:13:29 -0500 Subject: [PATCH] iscsi-initiator-utils: fix default file corrupt --- - usr/idbm.c | 24 +++++++++++++++++++++++- - 1 file changed, 23 insertions(+), 1 deletion(-) + usr/idbm.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/usr/idbm.c b/usr/idbm.c -index 830189f..7ed0ce9 100644 +index 6309be0..be5f8f9 100644 --- a/usr/idbm.c +++ b/usr/idbm.c -@@ -2006,6 +2006,7 @@ static int idbm_rec_write(node_rec_t *rec) +@@ -2139,6 +2139,7 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock) struct stat statb; FILE *f; char *portal; @@ -19,7 +19,7 @@ index 830189f..7ed0ce9 100644 int rc = 0; portal = malloc(PATH_MAX); -@@ -2092,7 +2093,7 @@ mkdir_portal: +@@ -2227,7 +2228,7 @@ mkdir_portal: } } @@ -28,7 +28,7 @@ index 830189f..7ed0ce9 100644 rec->name, rec->conn[0].address, rec->conn[0].port, rec->tpgt, rec->iface.name); open_conf: -@@ -2105,6 +2106,27 @@ open_conf: +@@ -2240,6 +2241,28 @@ open_conf: idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f); fclose(f); @@ -53,8 +53,10 @@ index 830189f..7ed0ce9 100644 + +free_portalDef: + free(portalDef); ++ unlock: - idbm_unlock(); - free_portal: + if (!disable_lock) + idbm_unlock(); -- 1.8.3.1 + diff --git a/0010-Buffer-not-null-terminated-Calling-strncpy.patch b/0010-Buffer-not-null-terminated-Calling-strncpy.patch deleted file mode 100644 index 0201b46f6fdf48d691c8f86bd09406ca5695952c..0000000000000000000000000000000000000000 --- a/0010-Buffer-not-null-terminated-Calling-strncpy.patch +++ /dev/null @@ -1,43 +0,0 @@ -From aa0e934c3513ca8fac9de463e328b5a150d057f5 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 12:10:27 -0700 -Subject: [PATCH 25/43] Buffer not null terminated: Calling strncpy with a - maximum size argument on destination array - ---- - usr/iscsi_net_util.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/usr/iscsi_net_util.c b/usr/iscsi_net_util.c -index a32b49c..56d2f69 100644 ---- a/usr/iscsi_net_util.c -+++ b/usr/iscsi_net_util.c -@@ -193,7 +193,7 @@ static char *find_vlan_dev(char *netdev, int vlan_id) { - - sockfd = socket(AF_INET, SOCK_DGRAM, 0); - -- strncpy(if_hwaddr.ifr_name, netdev, IFNAMSIZ); -+ strlcpy(if_hwaddr.ifr_name, netdev, IFNAMSIZ); - ioctl(sockfd, SIOCGIFHWADDR, &if_hwaddr); - - if (if_hwaddr.ifr_hwaddr.sa_family != ARPHRD_ETHER) -@@ -201,14 +201,14 @@ static char *find_vlan_dev(char *netdev, int vlan_id) { - - ifni = if_nameindex(); - for (i = 0; ifni[i].if_index && ifni[i].if_name; i++) { -- strncpy(vlan_hwaddr.ifr_name, ifni[i].if_name, IFNAMSIZ); -+ strlcpy(vlan_hwaddr.ifr_name, ifni[i].if_name, IFNAMSIZ); - ioctl(sockfd, SIOCGIFHWADDR, &vlan_hwaddr); - - if (vlan_hwaddr.ifr_hwaddr.sa_family != ARPHRD_ETHER) - continue; - - if (!memcmp(if_hwaddr.ifr_hwaddr.sa_data, vlan_hwaddr.ifr_hwaddr.sa_data, ETH_ALEN)) { -- strncpy(vlanrq.device1, ifni[i].if_name, IFNAMSIZ); -+ strlcpy(vlanrq.device1, ifni[i].if_name, IFNAMSIZ); - rc = ioctl(sockfd, SIOCGIFVLAN, &vlanrq); - if ((rc == 0) && (vlanrq.u.VID == vlan_id)) { - vlan = strdup(vlanrq.device1); --- -2.21.0 - diff --git a/0036-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch b/0010-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch similarity index 100% rename from 0036-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch rename to 0010-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch diff --git a/0011-Uninitialized-scalar-variable.patch b/0011-Uninitialized-scalar-variable.patch deleted file mode 100644 index 0d63d6d958353fcc87484873b37a4f66b13209c5..0000000000000000000000000000000000000000 --- a/0011-Uninitialized-scalar-variable.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 65c06d977a012541fd6144d4452f5191081fdd44 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 12:11:42 -0700 -Subject: [PATCH 26/43] Uninitialized scalar variable - ---- - usr/host.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/usr/host.c b/usr/host.c -index 62bf111..356650c 100644 ---- a/usr/host.c -+++ b/usr/host.c -@@ -217,7 +217,7 @@ static int print_host_iface(void *data, struct iface_rec *iface) - - static void print_host_ifaces(struct host_info *hinfo, char *prefix) - { -- int nr_found; -+ int nr_found = 0; - - iscsi_sysfs_for_each_iface_on_host(prefix, hinfo->host_no, &nr_found, - print_host_iface); --- -2.21.0 - diff --git a/0037-fix-iscsiadm-logout-timeout.patch b/0011-fix-iscsiadm-logout-timeout.patch similarity index 100% rename from 0037-fix-iscsiadm-logout-timeout.patch rename to 0011-fix-iscsiadm-logout-timeout.patch diff --git a/0012-Resource-leak-Handle-variable-sockfd-going-out-of-scope.patch b/0012-Resource-leak-Handle-variable-sockfd-going-out-of-scope.patch deleted file mode 100644 index d6ce908ea4334fb3cab59462d79ec282136bdbe2..0000000000000000000000000000000000000000 --- a/0012-Resource-leak-Handle-variable-sockfd-going-out-of-scope.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 98738bc389c62cef05bff9e03d5172253ebc82af Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 13:46:37 -0700 -Subject: [PATCH 29/43] Resource leak: Handle variable sockfd going out of - scope leaks the handle. - ---- - usr/iscsi_net_util.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/usr/iscsi_net_util.c b/usr/iscsi_net_util.c -index 56d2f69..b5a910f 100644 ---- a/usr/iscsi_net_util.c -+++ b/usr/iscsi_net_util.c -@@ -196,8 +196,10 @@ static char *find_vlan_dev(char *netdev, int vlan_id) { - strlcpy(if_hwaddr.ifr_name, netdev, IFNAMSIZ); - ioctl(sockfd, SIOCGIFHWADDR, &if_hwaddr); - -- if (if_hwaddr.ifr_hwaddr.sa_family != ARPHRD_ETHER) -+ if (if_hwaddr.ifr_hwaddr.sa_family != ARPHRD_ETHER) { -+ close(sockfd); - return NULL; -+ } - - ifni = if_nameindex(); - for (i = 0; ifni[i].if_index && ifni[i].if_name; i++) { --- -2.21.0 - diff --git a/0038-default-file-zero-after-power-outage.patch b/0012-default-file-zero-after-power-outage.patch similarity index 61% rename from 0038-default-file-zero-after-power-outage.patch rename to 0012-default-file-zero-after-power-outage.patch index a5f7f46ccbfb11774ae615eeefba2fc0b3369811..45454cd186d40eb90470592f93b3005b19a80f68 100644 --- a/0038-default-file-zero-after-power-outage.patch +++ b/0012-default-file-zero-after-power-outage.patch @@ -1,17 +1,18 @@ -From afc39d6f627f1e870883e8a6851f7a20f9700801 Mon Sep 17 00:00:00 2001 +From 9bfec2b1c66ffe05c04ece6eded412cc2fd49f84 Mon Sep 17 00:00:00 2001 From: sangxu Date: Wed, 30 May 2018 15:54:53 +0800 -Subject: [PATCH]fix default file zero after power outage, fsync file immediately and use correct parameters info when removing old file. +Subject: [PATCH] fix default file zero after power outage, fsync file + immediately and use correct parameters info when removing old file. --- - usr/idbm.c | 23 ++++++++++++++++++++--- - 1 file changed, 20 insertions(+), 3 deletions(-) + usr/idbm.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/usr/idbm.c b/usr/idbm.c -index 5437f45..c01c4fe 100644 +index be5f8f9..d431b00 100644 --- a/usr/idbm.c +++ b/usr/idbm.c -@@ -2074,6 +2074,23 @@ mkdir_portal: +@@ -2240,6 +2240,23 @@ open_conf: } idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f); @@ -35,14 +36,14 @@ index 5437f45..c01c4fe 100644 fclose(f); /* add for default_bak -> default */ -@@ -2392,7 +2409,7 @@ int idbm_add_node(node_rec_t *newrec, discovery_rec_t *drec, int overwrite) - if (!overwrite) - return 0; +@@ -2455,7 +2472,7 @@ int idbm_add_node(node_rec_t *newrec, discovery_rec_t *drec, int overwrite) + goto unlock; + } - rc = idbm_delete_node(&rec); + rc = idbm_delete_node(newrec); if (rc) - return rc; + goto unlock; log_debug(7, "overwriting existing record"); -- 1.8.3.1 diff --git a/0041-Fix-issue-where-iscsi-iname-p-core-dumps.patch b/0013-Fix-issue-where-iscsi-iname-p-core-dumps.patch similarity index 70% rename from 0041-Fix-issue-where-iscsi-iname-p-core-dumps.patch rename to 0013-Fix-issue-where-iscsi-iname-p-core-dumps.patch index 76ffaad43401f3964a0ee0d105b6f17a19fbcc85..c9dfc45be7b5a875335e99450b54483719b90f3e 100644 --- a/0041-Fix-issue-where-iscsi-iname-p-core-dumps.patch +++ b/0013-Fix-issue-where-iscsi-iname-p-core-dumps.patch @@ -1,4 +1,4 @@ -From 9cfd62d24ea564c69f09b9f129b39d4460504cec Mon Sep 17 00:00:00 2001 +From 40454759ba37c69c59473d63635cfccc7bb5ec8d Mon Sep 17 00:00:00 2001 From: Lee Duncan Date: Tue, 12 May 2020 16:01:50 +0800 Subject: [PATCH] Fix issue where 'iscsi-iname -p' core dumps @@ -7,18 +7,17 @@ Fix issue where 'iscsi-iname -p' core dumps Signed-off-by: Lee Duncan --- - utils/iscsi-iname.c | 19 +++++++++++++++---- - 1 file changed, 15 insertions(+), 4 deletions(-) + utils/iscsi-iname.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c -index ad843a0..173e632 100644 +index da850dc..d1c067b 100644 --- a/utils/iscsi-iname.c +++ b/utils/iscsi-iname.c -@@ -40,6 +40,14 @@ - * a seperator and 12 characters (6 random bytes in hex representation) - */ - #define PREFIX_MAX_LEN 210 -+ +@@ -40,6 +40,13 @@ + * a seperator and 12 characters (6 random bytes in hex representation) */ + #define PREFIX_MAX_LEN 210 + +static void usage(void) +{ + fprintf(stderr, "Usage: iscsi-iname [-h | --help | -p ]\n"); @@ -29,20 +28,20 @@ index ad843a0..173e632 100644 int main(int argc, char *argv[]) { -@@ -68,14 +76,17 @@ main(int argc, char *argv[]) +@@ -68,15 +75,17 @@ main(int argc, char *argv[]) "on every invocation.\n"); exit(0); } else if ( strcmp(prefix, "-p") == 0 ) { -+ if (argc != 3) { ++ if (argc != 3){ + usage(); + exit(1); + } prefix = argv[2]; if (strnlen(prefix, PREFIX_MAX_LEN + 1) > PREFIX_MAX_LEN) { -- printf("Error: Prexfix cannot exceed %d " -- "characters.\n", PREFIX_MAX_LEN); +- printf("Error: Prefix cannot exceed %d " +- "characters.\n", PREFIX_MAX_LEN); + usage(); -+ exit(1); + exit(1); } } else { - printf("\nUsage: iscsi-iname [-h | --help | " diff --git a/0013-Resource-leak-Variable-chap_info-going-out-of-scope.patch b/0013-Resource-leak-Variable-chap_info-going-out-of-scope.patch deleted file mode 100644 index 8ade94b955f2e10444eedb70956062a07fb03c99..0000000000000000000000000000000000000000 --- a/0013-Resource-leak-Variable-chap_info-going-out-of-scope.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 020d46c3cb95d627bd1246e6212981cf22adf651 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 13:50:22 -0700 -Subject: [PATCH 30/43] Resource leak: Variable chap_info going out of scope - leaks the storage it points to. - ---- - usr/iscsiadm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c -index 2ce6ae7..efc9f43 100644 ---- a/usr/iscsiadm.c -+++ b/usr/iscsiadm.c -@@ -1734,7 +1734,7 @@ static int set_host_chap_info(uint32_t host_no, uint64_t chap_index, - rc = ISCSI_ERR; - } - -- goto exit_set_chap; -+ goto free_iovec; - } - - ipc->ctldev_close(); --- -2.19.1 - diff --git a/0014-Resource-leak-Variable-matched_ses-going-out-of-scope.patch b/0014-Resource-leak-Variable-matched_ses-going-out-of-scope.patch deleted file mode 100644 index ecedaba8670eba88d7df95164f746e80e9667e4c..0000000000000000000000000000000000000000 --- a/0014-Resource-leak-Variable-matched_ses-going-out-of-scope.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 096fc3ca10492c0810f1aaf76266006a2a803109 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 13:54:27 -0700 -Subject: [PATCH 31/43] Resource leak: Variable matched_ses going out of scope - leaks the storage it points to. - ---- - usr/host.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/usr/host.c b/usr/host.c -index 356650c..c94b6d1 100644 ---- a/usr/host.c -+++ b/usr/host.c -@@ -262,14 +262,14 @@ static int host_info_print_tree(void *data, struct host_info *hinfo) - matched_ses[matched_se_count++] = ses[i]; - - if (!matched_se_count) -- return 0; -+ goto out; - - printf("\t*********\n"); - printf("\tSessions:\n"); - printf("\t*********\n"); - session_info_print_tree(matched_ses, matched_se_count, "\t", - session_info_flags, 0/* don't show password */); -- -+out: - free(matched_ses); - return 0; - } --- -2.21.0 - diff --git a/0042-modify-iSCSI-shared-memory-permissions-for-logs.patch b/0014-modify-iSCSI-shared-memory-permissions-for-logs.patch similarity index 100% rename from 0042-modify-iSCSI-shared-memory-permissions-for-logs.patch rename to 0014-modify-iSCSI-shared-memory-permissions-for-logs.patch diff --git a/0015-Resource-leak-Handle-variable-fd-going-out-of-scope.patch b/0015-Resource-leak-Handle-variable-fd-going-out-of-scope.patch deleted file mode 100644 index 72cdcfcc31ab431ad52d058722bb27e2431dd246..0000000000000000000000000000000000000000 --- a/0015-Resource-leak-Handle-variable-fd-going-out-of-scope.patch +++ /dev/null @@ -1,29 +0,0 @@ -From ca6eb221321c0e24b94f667ecc75a5fc17aa2018 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 13:59:31 -0700 -Subject: [PATCH 32/43] Resource leak: Handle variable fd going out of scope - leaks the handle. - -This is comming up in places where the error handling assumes that on a -failure there is no file descriptor to worry about. I don't think we -need to keep fd around when indicating a connection error. ---- - usr/iscsid_req.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/usr/iscsid_req.c b/usr/iscsid_req.c -index 427e894..d872eb7 100644 ---- a/usr/iscsid_req.c -+++ b/usr/iscsid_req.c -@@ -97,6 +97,8 @@ static int ipc_connect(int *fd, char *unix_sock_name, int start_iscsid) - if (nsec <= MAXSLEEP/2) - sleep(nsec); - } -+ close(*fd); -+ *fd = -1; - log_error("can not connect to iSCSI daemon (%d)!", errno); - return ISCSI_ERR_ISCSID_NOTCONN; - } --- -2.21.0 - diff --git a/0043-iscsi-Add-break-to-while-loop.patch b/0015-iscsi-Add-break-to-while-loop.patch similarity index 100% rename from 0043-iscsi-Add-break-to-while-loop.patch rename to 0015-iscsi-Add-break-to-while-loop.patch diff --git a/0016-Resource-leak-Handle-variable-fd-going-out-of-scope.patch b/0016-Resource-leak-Handle-variable-fd-going-out-of-scope.patch deleted file mode 100644 index 6e478f41a20e5096cf0f429f8310fd7f13a4ea6b..0000000000000000000000000000000000000000 --- a/0016-Resource-leak-Handle-variable-fd-going-out-of-scope.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1a17ffcc07ff7021d66940f58f42bfaa78e763bf Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 14:08:57 -0700 -Subject: [PATCH 33/43] Resource leak: Handle variable fd going out of scope - leaks the handle. - ---- - usr/iscsi_util.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/usr/iscsi_util.c b/usr/iscsi_util.c -index 0570dd5..fd8fc0c 100644 ---- a/usr/iscsi_util.c -+++ b/usr/iscsi_util.c -@@ -62,6 +62,7 @@ void daemon_init(void) - setsid(); - if (chdir("/") < 0) - log_debug(1, "Could not chdir to /: %s", strerror(errno)); -+ close(fd); - } - - #define ISCSI_OOM_PATH_LEN 48 --- -2.21.0 - diff --git a/0044-iscsi-fix-fd-leak.patch b/0016-iscsi-fix-fd-leak.patch similarity index 100% rename from 0044-iscsi-fix-fd-leak.patch rename to 0016-iscsi-fix-fd-leak.patch diff --git a/0045-Fix-devel-without-node-header-files.patch b/0017-Fix-devel-without-node-header-files.patch similarity index 100% rename from 0045-Fix-devel-without-node-header-files.patch rename to 0017-Fix-devel-without-node-header-files.patch diff --git a/0017-Out-of-bounds-read.patch b/0017-Out-of-bounds-read.patch deleted file mode 100644 index f2ed69e21cda03b094286c1b08db5dde906ff56f..0000000000000000000000000000000000000000 --- a/0017-Out-of-bounds-read.patch +++ /dev/null @@ -1,35 +0,0 @@ -From de0680b4f46f767c34a4a503dadcb24135c21cb6 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Wed, 30 Oct 2019 14:12:16 -0700 -Subject: [PATCH 34/43] Out-of-bounds read: Overrunning array of 4 bytes at - byte offset 7 by dereferencing pointer - ---- - iscsiuio/src/unix/libs/qedi.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c -index b7595d5..3414cb5 100644 ---- a/iscsiuio/src/unix/libs/qedi.c -+++ b/iscsiuio/src/unix/libs/qedi.c -@@ -442,7 +442,7 @@ static int qedi_open(nic_t *nic) - qedi_t *bp = NULL; - struct stat uio_stat; - int i, rc; -- int count; -+ size_t count; - uint32_t bus; - uint32_t slot; - uint32_t func; -@@ -666,7 +666,7 @@ static int qedi_open(nic_t *nic) - nic->mac_addr[0], nic->mac_addr[1], nic->mac_addr[2], - nic->mac_addr[3], nic->mac_addr[4], nic->mac_addr[5]); - -- qedi_get_library_name(&nic->library_name, (size_t *)&count); -+ qedi_get_library_name(&nic->library_name, &count); - LOG_INFO("%s: qedi initialized", nic->log_name); - - bp->flags |= QEDI_OPENED; --- -2.21.0 - diff --git a/0018-fwparam_pcc-mulitple-resource-leaks.patch b/0018-fwparam_pcc-mulitple-resource-leaks.patch deleted file mode 100644 index 13fd987fd8732b7765f76cd387caebaaacb2a8b2..0000000000000000000000000000000000000000 --- a/0018-fwparam_pcc-mulitple-resource-leaks.patch +++ /dev/null @@ -1,39 +0,0 @@ -From f7d92a5f0a788179bf804dd898d2b5238da5d2d1 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Thu, 31 Oct 2019 14:24:53 -0700 -Subject: [PATCH 39/43] fwparam_pcc mulitple resource leaks - -Resource Leak: Variable mac_file going out of scope leaks the storage it points to. -Resource Leak: Handle variable mac_fd going out of scope leaks the storage it points to. ---- - utils/fwparam_ibft/fwparam_ppc.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/utils/fwparam_ibft/fwparam_ppc.c b/utils/fwparam_ibft/fwparam_ppc.c -index 52a5c50..429d45c 100644 ---- a/utils/fwparam_ibft/fwparam_ppc.c -+++ b/utils/fwparam_ibft/fwparam_ppc.c -@@ -132,6 +132,7 @@ static int locate_mac(const char *devtree, struct ofw_dev *ofwdev) - error = errno; - fprintf(stderr, "%s: open %s, %s\n", __func__, mac_file, - strerror(errno)); -+ free(mac_file); - goto lpm_bail; - } - -@@ -140,12 +141,10 @@ static int locate_mac(const char *devtree, struct ofw_dev *ofwdev) - error = EIO; - fprintf(stderr, "%s: read %s, %s\n", __func__, mac_file, - strerror(errno)); -- goto lpm_bail; - } - free(mac_file); - close(mac_fd); - -- - lpm_bail: - return error; - } --- -2.21.0 - diff --git a/0018-resolve-compilation-errors.patch b/0018-resolve-compilation-errors.patch new file mode 100644 index 0000000000000000000000000000000000000000..9cfecefb1d2bbc811b076a4003cf084c8a8cc17f --- /dev/null +++ b/0018-resolve-compilation-errors.patch @@ -0,0 +1,53 @@ +From 982eb357f12b86152f85fb5a1dba47e965ebf9d5 Mon Sep 17 00:00:00 2001 +From: wuguanghao +Date: Thu, 9 Jul 2020 14:56:28 +0800 +Subject: [PATCH] resolve compilation errors + +--- + usr/iscsiadm.c | 2 +- + usr/log.c | 2 -- + usr/mgmt_ipc.c | 2 +- + 3 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c +index b386abe..ae560bc 100644 +--- a/usr/iscsiadm.c ++++ b/usr/iscsiadm.c +@@ -352,7 +352,7 @@ static void kill_iscsid(int priority, int tmo) + } else { + rc = kill(atol(iscsidpid), 0); + if (ESRCH == rc) { +- log_error("iscsid %d maybe in zombie.\n", atol(iscsidpid)); ++ log_error("iscsid %ld maybe in zombie.\n", atol(iscsidpid)); + return; + } + } +diff --git a/usr/log.c b/usr/log.c +index 3a52263..00a28f1 100644 +--- a/usr/log.c ++++ b/usr/log.c +@@ -473,8 +473,6 @@ static int log_watchdog_setup(void) + static int log_read_comm_frpm_pid(pid_t pid, char *buffer, int len) + { + char comm_file[256]; +- char comm_content[1024]; +- int r; + FILE *fd = NULL; + buffer[0] = '\0'; + snprintf(comm_file, sizeof(comm_file), "/proc/%i/comm", pid); +diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c +index 3b01949..9e8a323 100644 +--- a/usr/mgmt_ipc.c ++++ b/usr/mgmt_ipc.c +@@ -170,7 +170,7 @@ mgmt_ipc_cfg_initiatorname(queue_task_t *qtask) + { + if (dconfig->initiator_name) { + if (VALUE_MAXLEN <= strlen(dconfig->initiator_name)){ +- log_error("iscsid: len[%d] of initiator name out of range, max len %d.", strlen(dconfig->initiator_name), VALUE_MAXLEN-1); ++ log_error("iscsid: len[%ld] of initiator name out of range, max len %d.", strlen(dconfig->initiator_name), VALUE_MAXLEN-1); + return ISCSI_ERR_INVAL; + } + +-- +1.8.3.1 + diff --git a/0019-Resource-leak-Handl-variable-fd.patch b/0019-Resource-leak-Handl-variable-fd.patch deleted file mode 100644 index 2cbabe09159ba8821693151a17f02a97a1c31192..0000000000000000000000000000000000000000 --- a/0019-Resource-leak-Handl-variable-fd.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 504b990bc886d708ae673ac1fa0e09e7911c2823 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Thu, 31 Oct 2019 15:08:40 -0700 -Subject: [PATCH 40/43] Resource leak: Handle variable fd going out of scope - leaks the handle. - ---- - iscsiuio/src/unix/main.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/iscsiuio/src/unix/main.c b/iscsiuio/src/unix/main.c -index 5168e4e..5e3f66c 100644 ---- a/iscsiuio/src/unix/main.c -+++ b/iscsiuio/src/unix/main.c -@@ -196,6 +196,7 @@ static void daemon_init() - dup2(fd, 2); - setsid(); - chdir("/"); -+ close(fd); - } - - #define ISCSI_OOM_PATH_LEN 48 --- -2.21.0 - diff --git a/0020-Resource-leak-Variable-raw.patch b/0020-Resource-leak-Variable-raw.patch deleted file mode 100644 index 0201b0b9047c283f93ff7e2a47ae282cc11f8590..0000000000000000000000000000000000000000 --- a/0020-Resource-leak-Variable-raw.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 860187423092ba43112f4c2d303978dda7254c58 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Thu, 31 Oct 2019 15:22:02 -0700 -Subject: [PATCH 42/43] Resource leak: Variable raw going out of scope leaks - the storage it points to. - ---- - iscsiuio/src/unix/nic_utils.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/iscsiuio/src/unix/nic_utils.c b/iscsiuio/src/unix/nic_utils.c -index aad679e..84ffc5c 100644 ---- a/iscsiuio/src/unix/nic_utils.c -+++ b/iscsiuio/src/unix/nic_utils.c -@@ -245,6 +245,7 @@ int nic_discover_iscsi_hosts() - "space for NIC %s " - "during scan", raw); - -+ free(raw); - rc = -ENOMEM; - break; - } --- -2.21.0 - diff --git a/0021-Allow-reading-sysfs-port-to-fail-gracefully.patch b/0021-Allow-reading-sysfs-port-to-fail-gracefully.patch deleted file mode 100644 index 7c12f0e40471b82364a25ab94f51f3a0fa3c334f..0000000000000000000000000000000000000000 --- a/0021-Allow-reading-sysfs-port-to-fail-gracefully.patch +++ /dev/null @@ -1,29 +0,0 @@ -From d8298fc54eb69d3989878be46e9c7d6ec2055650 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Mon, 24 Sep 2018 16:22:18 -0700 -Subject: [PATCH 05/87] Allow reading sysfs "port" to fail gracefully. - -Do not consider it a fatal error if reading sysfs value -for "port" fails, since we allow failure for "address". ---- - libopeniscsiusr/session.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c -index a833939..f8c89c3 100644 ---- a/libopeniscsiusr/session.c -+++ b/libopeniscsiusr/session.c -@@ -205,8 +205,8 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid, - _sysfs_prop_get_str(ctx, sysfs_con_dir_path, "address", (*se)->address, - sizeof((*se)->address) / sizeof(char), ""); - -- _good(_sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port", -- &((*se)->port), -1, false), rc, out); -+ _sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port", -+ &((*se)->port), -1, true); - - if ((strcmp((*se)->address, "") == 0) && - (strcmp((*se)->persistent_address, "") != 0)) --- -1.8.3.1 - diff --git a/0022-Fix-incorrect-sysfs-logic-for-port-and-ip-address.patch b/0022-Fix-incorrect-sysfs-logic-for-port-and-ip-address.patch deleted file mode 100644 index b0e5ab544a06171b6e9d376c7d2f5f74677ce609..0000000000000000000000000000000000000000 --- a/0022-Fix-incorrect-sysfs-logic-for-port-and-ip-address.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 7df5edbb427c79337bdd651c2bcdda8eb05f077b Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Mon, 24 Sep 2018 16:30:34 -0700 -Subject: [PATCH 06/87] Fix incorrect sysfs logic for port and ip address. - -If "port" is available and "persistent_port" is not, then -correctly use the one that is present for both values. -Likewise for "address" and "persistent_address". ---- - libopeniscsiusr/session.c | 18 ++++++++---------- - 1 file changed, 8 insertions(+), 10 deletions(-) - -diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c -index f8c89c3..98601dc 100644 ---- a/libopeniscsiusr/session.c -+++ b/libopeniscsiusr/session.c -@@ -208,22 +208,20 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid, - _sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port", - &((*se)->port), -1, true); - -- if ((strcmp((*se)->address, "") == 0) && -- (strcmp((*se)->persistent_address, "") != 0)) -- _strncpy((*se)->persistent_address, (*se)->address, -- sizeof((*se)->persistent_address) / sizeof(char)); -- - if ((strcmp((*se)->address, "") != 0) && - (strcmp((*se)->persistent_address, "") == 0)) -+ _strncpy((*se)->persistent_address, (*se)->address, -+ sizeof((*se)->persistent_address) / sizeof(char)); -+ else if ((strcmp((*se)->address, "") == 0) && -+ (strcmp((*se)->persistent_address, "") != 0)) - _strncpy((*se)->address, (*se)->persistent_address, - sizeof((*se)->address) / sizeof(char)); - -- if (((*se)->persistent_port != -1) && -- ((*se)->port == -1)) -+ if (((*se)->persistent_port == -1) && -+ ((*se)->port != -1)) - (*se)->persistent_port = (*se)->port; -- -- if (((*se)->persistent_port != -1) && -- ((*se)->port == -1)) -+ else if (((*se)->persistent_port != -1) && -+ ((*se)->port == -1)) - (*se)->port = (*se)->persistent_port; - - _good(_iscsi_host_id_of_session(ctx, sid, &host_id), rc, out); --- -1.8.3.1 - diff --git a/0023-Handle-ENOTCONN-error-separately-when-reading-sysfs.patch b/0023-Handle-ENOTCONN-error-separately-when-reading-sysfs.patch deleted file mode 100644 index 86ee9014a0be8755c400544b8e80080d11cf56f4..0000000000000000000000000000000000000000 --- a/0023-Handle-ENOTCONN-error-separately-when-reading-sysfs.patch +++ /dev/null @@ -1,65 +0,0 @@ -From ae0b2ceb620e2bf527c06d21c110791d1e0e8bf4 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Tue, 25 Sep 2018 09:57:46 -0700 -Subject: [PATCH 10/87] Handle ENOTCONN error separately when reading sysfs - values. - -This error happens when the daemon is attempting to -reconnect a session when starting up, so should not -be considered an internal error. ---- - libopeniscsiusr/sysfs.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c -index 5e6532e..2c3f077 100644 ---- a/libopeniscsiusr/sysfs.c -+++ b/libopeniscsiusr/sysfs.c -@@ -184,6 +184,21 @@ int _sysfs_prop_get_str(struct iscsi_context *ctx, const char *dir_path, - _error(ctx, "Failed to read '%s': " - "permission deny when reading '%s'", prop_name, - file_path); -+ } else if (errno_save == ENOTCONN) { -+ if (default_value == NULL) { -+ rc = LIBISCSI_ERR_SYSFS_LOOKUP; -+ _error(ctx, "Failed to read '%s': " -+ "error when reading '%s': " -+ "Target unavailable", -+ prop_name, file_path); -+ } else { -+ _info(ctx, "Failed to read '%s': " -+ "error when reading '%s': " -+ "Target unavailable, using default value '%s'", -+ prop_name, file_path, default_value); -+ memcpy(buff, (void *) default_value, -+ strlen(default_value) + 1); -+ } - } else { - rc = LIBISCSI_ERR_BUG; - _error(ctx, "Failed to read '%s': " -@@ -246,6 +261,22 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx, - _error(ctx, "Permission deny when reading '%s'", - file_path); - goto out; -+ } else if (errno_save == ENOTCONN) { -+ if (!ignore_error) { -+ rc = LIBISCSI_ERR_SYSFS_LOOKUP; -+ _error(ctx, "Failed to read '%s': " -+ "error when reading '%s': " -+ "Target unavailable", -+ prop_name, file_path); -+ goto out; -+ } else { -+ _info(ctx, "Failed to read '%s': " -+ "error when reading '%s': " -+ "Target unavailable, using default value %lld", -+ prop_name, file_path, default_value); -+ *val = default_value; -+ goto out; -+ } - } else { - rc = LIBISCSI_ERR_BUG; - _error(ctx, "Error when reading '%s': %d", file_path, --- -1.8.3.1 - diff --git a/0024-Added-service-file-for-iscsi-logins.patch b/0024-Added-service-file-for-iscsi-logins.patch deleted file mode 100644 index 4406891a684fd586f0f9085dc0c341226aa2f670..0000000000000000000000000000000000000000 --- a/0024-Added-service-file-for-iscsi-logins.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 666694ed3654e333751af0897c8b71f8cc1829f8 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Tue, 16 Oct 2018 13:53:09 -0700 -Subject: [PATCH] Added service file for iscsi logins - -This service file layers on top of iscsid.serivce -to manage logging into and out of known targets. ---- - etc/systemd/iscsi.service | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - create mode 100644 etc/systemd/iscsi.service - -diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service -new file mode 100644 -index 0000000..0edcf51 ---- /dev/null -+++ b/etc/systemd/iscsi.service -@@ -0,0 +1,17 @@ -+[Unit] -+Description=Login and scanning of iSCSI devices -+Documentation=man:iscsiadm(8) man:iscsid(8) -+Before=remote-fs.target -+After=network.target network-online.target iscsid.service -+ConditionPathExists=/etc/iscsi/initiatorname.iscsi -+ -+[Service] -+Type=oneshot -+ExecStart=-/sbin/iscsiadm -m node --loginall=automatic -+ExecStop=/sbin/iscsiadm -m node --logoutall=automatic -+ExecStop=/sbin/iscsiadm -m node --logoutall=manual -+SuccessExitStatus=21 -+RemainAfterExit=true -+ -+[Install] -+WantedBy=remote-fs.target --- -1.8.3.1 - diff --git a/0025-Fixed-iscsi.service-considering-every-signal-and-exi.patch b/0025-Fixed-iscsi.service-considering-every-signal-and-exi.patch deleted file mode 100644 index 31b21e2cb19580283a41fcb7050241bc09ece4ae..0000000000000000000000000000000000000000 --- a/0025-Fixed-iscsi.service-considering-every-signal-and-exi.patch +++ /dev/null @@ -1,27 +0,0 @@ -From bbe55896a92a20db2ce79d100e3027cd4940ddce Mon Sep 17 00:00:00 2001 -From: igo95862 -Date: Mon, 11 Feb 2019 14:53:23 -0800 -Subject: [PATCH] Fixed iscsi.service considering every signal and exit code as - successful. Now only code 21 (no objects found to execute on) and normal exit - conditions are valid. - ---- - etc/systemd/iscsi.service | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service -index 03876c5..e475888 100644 ---- a/etc/systemd/iscsi.service -+++ b/etc/systemd/iscsi.service -@@ -8,7 +8,7 @@ ConditionPathExists=/etc/iscsi/initiatorname.iscsi - - [Service] - Type=oneshot --ExecStart=-/sbin/iscsiadm -m node --loginall=automatic -+ExecStart=/sbin/iscsiadm -m node --loginall=automatic - ExecStop=/sbin/iscsiadm -m node --logoutall=automatic - ExecStop=/sbin/iscsiadm -m node --logoutall=manual - SuccessExitStatus=21 --- -1.8.3.1 - diff --git a/0031-fix-timeout-setting-on-session-commands.patch b/0031-fix-timeout-setting-on-session-commands.patch deleted file mode 100644 index 8e1822a5fdb5c81b0b27f0b063a536be77a5f489..0000000000000000000000000000000000000000 --- a/0031-fix-timeout-setting-on-session-commands.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3de6ac0237bf10e6ba60e72faa4c06cfb469e070 Mon Sep 17 00:00:00 2001 -From: pengyeqing -Date: Sat, 26 Jan 2019 23:53:37 +0800 -Subject: [PATCH] iscsi-initiator-utils: fix timeout setting on session - commands - -reason:fix timeout setting on session commands - -Signed-off-by: pengyeqing ---- - usr/iscsiadm.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c -index a6b9605..5d432cd 100644 ---- a/usr/iscsiadm.c -+++ b/usr/iscsiadm.c -@@ -4018,6 +4018,8 @@ main(int argc, char **argv) - goto out; - } - -+ info->iscsid_req_tmo = -1; -+ - rc = iscsi_sysfs_get_sessioninfo_by_id(info, session); - if (rc) { - log_error("Could not get session info for sid " --- -1.8.3.1 - diff --git a/0039-iscsi-iname-verify-prefix-length-is-at-most-210.patch b/0039-iscsi-iname-verify-prefix-length-is-at-most-210.patch deleted file mode 100644 index 0e6e290b87709003967668fd63fbe16822dff309..0000000000000000000000000000000000000000 --- a/0039-iscsi-iname-verify-prefix-length-is-at-most-210.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 8576421467835d5c5ff5d48c3ff82ca797274236 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Tue, 12 May 2020 15:43:10 +0800 -Subject: [PATCH] iscsi-iname: verify prefix length is at most 210 - -Don't know who might be trying to make reall long IQNs - -Signed-off-by: Chris Leech ---- - utils/iscsi-iname.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c -index 6273d83..da8e68a 100644 ---- a/utils/iscsi-iname.c -+++ b/utils/iscsi-iname.c -@@ -35,7 +35,11 @@ - #include "md5.h" - - #define RANDOM_NUM_GENERATOR "/dev/urandom" -- -+/* -+ * iSCSI names have a maxinum length of 223 characters, we reserve 13 to append -+ * a seperator and 12 characters (6 random bytes in hex representation) -+ */ -+#define PREFIX_MAX_LEN 210 - int - main(int argc, char *argv[]) - { -@@ -67,6 +71,10 @@ main(int argc, char *argv[]) - exit(0); - } else if ( strcmp(prefix, "-p") == 0 ) { - prefix = argv[2]; -+ if (strnlen(prefix, PREFIX_MAX_LEN + 1) > PREFIX_MAX_LEN) { -+ printf("Error: Prexfix cannot exceed %d " -+ "characters.\n", PREFIX_MAX_LEN); -+ } - } else { - printf("\nUsage: iscsi-iname [-h | --help | " - "-p ]\n"); --- -1.8.3.1 - diff --git a/0040-iscsi-iname-remove-unneeded-temp-buffer.patch b/0040-iscsi-iname-remove-unneeded-temp-buffer.patch deleted file mode 100644 index 4f2a730c385e2a1693e62eaa2e701720e052e484..0000000000000000000000000000000000000000 --- a/0040-iscsi-iname-remove-unneeded-temp-buffer.patch +++ /dev/null @@ -1,56 +0,0 @@ -From ed9621a9330c542e73c4290de76644b48e4d5113 Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Tue, 12 May 2020 15:50:09 +0800 -Subject: [PATCH] iscsi-iname remove unneeded temp buffer - -iscsi-iname remove unneeded temp buffer - -Signed-off-by: Chris Leech ---- - utils/iscsi-iname.c | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c -index da8e68a..086d9bb 100644 ---- a/utils/iscsi-iname.c -+++ b/utils/iscsi-iname.c -@@ -43,7 +43,6 @@ - int - main(int argc, char *argv[]) - { -- char iname[256]; - struct timeval time; - struct utsname system_info; - long hostid; -@@ -56,7 +55,6 @@ main(int argc, char *argv[]) - char *prefix; - - /* initialize */ -- memset(iname, 0, sizeof (iname)); - memset(digest, 0, sizeof (digest)); - memset(&context, 0, sizeof (context)); - MD5Init(&context); -@@ -71,7 +69,7 @@ main(int argc, char *argv[]) - exit(0); - } else if ( strcmp(prefix, "-p") == 0 ) { - prefix = argv[2]; -- if (strnlen(prefix, PREFIX_MAX_LEN + 1) > PREFIX_MAX_LEN) { -+ if (strnlen(prefix, PREFIX_MAX_LEN + 1) > PREFIX_MAX_LEN) { - printf("Error: Prexfix cannot exceed %d " - "characters.\n", PREFIX_MAX_LEN); - } -@@ -140,10 +138,8 @@ main(int argc, char *argv[]) - } - - /* print the prefix followed by 6 bytes of the MD5 hash */ -- sprintf(iname, "%s:%x%x%x%x%x%x", prefix, -+ printf("%s:%x%x%x%x%x%x", prefix, - bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5]); - -- iname[sizeof (iname) - 1] = '\0'; -- printf("%s\n", iname); - return 0; - } --- -1.8.3.1 - diff --git a/open-iscsi-2.1.1.tar.gz b/open-iscsi-2.1.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..38bb58f6210147254ee812cc57e3dbf9c5174e93 Binary files /dev/null and b/open-iscsi-2.1.1.tar.gz differ diff --git a/open-iscsi-f3c8e90.tar.gz b/open-iscsi-f3c8e90.tar.gz deleted file mode 100644 index d7785c5ed43c226b7486bd3bca95df2bb02f6b15..0000000000000000000000000000000000000000 Binary files a/open-iscsi-f3c8e90.tar.gz and /dev/null differ diff --git a/open-iscsi.spec b/open-iscsi.spec index 1c633cd9f43b134d25156cceca83728ad779c0c8..42775477513ff2df4cf7311532e1ca1386743ffb 100644 --- a/open-iscsi.spec +++ b/open-iscsi.spec @@ -3,62 +3,33 @@ %global socket_enable() /bin/systemctl enable %1.socket >/dev/null 2>&1 || : Name: open-iscsi -Version: 2.0.876 -Release: 22 +Version: 2.1.1 +Release: 1 Summary: ISCSI software initiator daemon and utility programs License: GPLv2+ and BSD URL: http://www.open-iscsi.org -Source0: https://github.com/open-iscsi/open-iscsi/archive/f3c8e90fc0894c088950a15ee6618b427f9e2457.tar.gz#/open-iscsi-f3c8e90.tar.gz - -Patch0000: 0000-Plugging-a-memory-leak-from-discovery.patch -Patch0001: 0001-Fix-bug-in-error-message-when-reading-sysfs-numbers.patch -Patch0002: 0002-Do-not-allow-multiple-sessions-when-nr_sessions-1.patch -Patch0003: 0003-Fix-possible-discovery-hang-when-timing-out.patch -Patch0004: 0004-Resource-leak-returning-without-freeing-netdev.patch -Patch0005: 0005-Out-of-bounds-write-Overrunning-array-link_target.patch -Patch0006: 0006-Resource-leak-Variable-rec-going-out-of-scope-leaks.patch -Patch0007: 0007-Out-of-bounds-write-Overrunning-array-link_target.patch -Patch0008: 0008-Buffer-not-null-terminated-Calling-strncpy.patch -Patch0009: 0009-Resource-leak-Variable-startup_cmd-going-out-of-scop.patch -Patch0010: 0010-Buffer-not-null-terminated-Calling-strncpy.patch -Patch0011: 0011-Uninitialized-scalar-variable.patch -Patch0012: 0012-Resource-leak-Handle-variable-sockfd-going-out-of-scope.patch -Patch0013: 0013-Resource-leak-Variable-chap_info-going-out-of-scope.patch -Patch0014: 0014-Resource-leak-Variable-matched_ses-going-out-of-scope.patch -Patch0015: 0015-Resource-leak-Handle-variable-fd-going-out-of-scope.patch -Patch0016: 0016-Resource-leak-Handle-variable-fd-going-out-of-scope.patch -Patch0017: 0017-Out-of-bounds-read.patch -Patch0018: 0018-fwparam_pcc-mulitple-resource-leaks.patch -Patch0019: 0019-Resource-leak-Handl-variable-fd.patch -Patch0020: 0020-Resource-leak-Variable-raw.patch -Patch0021: 0021-Allow-reading-sysfs-port-to-fail-gracefully.patch -Patch0022: 0022-Fix-incorrect-sysfs-logic-for-port-and-ip-address.patch -Patch0023: 0023-Handle-ENOTCONN-error-separately-when-reading-sysfs.patch -Patch0024: 0024-Added-service-file-for-iscsi-logins.patch -Patch0025: 0025-Fixed-iscsi.service-considering-every-signal-and-exi.patch - -Patch0026: 0026-change-iscsi-iqn-default-value.patch -Patch0027: 0027-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch -Patch0028: 0028-add-sleep-for-service.patch -Patch0029: 0029-not-send-stop-message-if-iscsid-absent.patch -Patch0030: 0030-iscsid-SIGTERM-syncprocess-hang.patch -Patch0031: 0031-fix-timeout-setting-on-session-commands.patch -Patch0032: 0032-restart-log-daemon-when-exited-abnormally.patch -Patch0033: 0033-check-initiator-name-out-of-range.patch -Patch0034: 0034-do-not-sync-session-when-a-session-is-already-created.patch -Patch0035: 0035-fix-default-file-corrupt.patch -Patch0036: 0036-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch -Patch0037: 0037-fix-iscsiadm-logout-timeout.patch -Patch0038: 0038-default-file-zero-after-power-outage.patch -Patch0039: 0039-iscsi-iname-verify-prefix-length-is-at-most-210.patch -Patch0040: 0040-iscsi-iname-remove-unneeded-temp-buffer.patch -Patch0041: 0041-Fix-issue-where-iscsi-iname-p-core-dumps.patch -Patch0042: 0042-modify-iSCSI-shared-memory-permissions-for-logs.patch -Patch0043: 0043-iscsi-Add-break-to-while-loop.patch -Patch0044: 0044-iscsi-fix-fd-leak.patch -Patch0045: 0045-Fix-devel-without-node-header-files.patch - -BuildRequires: flex bison doxygen kmod-devel systemd-units gcc git isns-utils-devel +Source0: https://github.com/open-iscsi/open-iscsi/archive/2.1.1.tar.gz#/open-iscsi-2.1.1.tar.gz +Patch1: 0001-change-iscsi-iqn-default-value.patch +Patch2: 0002-iscsid-Check-nr_sessions-when-creating-a-copy-of-exi.patch +Patch3: 0003-add-sleep-for-service.patch +Patch4: 0004-not-send-stop-message-if-iscsid-absent.patch +Patch5: 0005-iscsid-SIGTERM-syncprocess-hang.patch +Patch6: 0006-restart-log-daemon-when-exited-abnormally.patch +Patch7: 0007-check-initiator-name-out-of-range.patch +Patch8: 0008-do-not-sync-session-when-a-session-is-already-created.patch +Patch9: 0009-fix-default-file-corrupt.patch +Patch10: 0010-iscsiadm-fix-infinite-loop-while-recv-returns-0.patch +Patch11: 0011-fix-iscsiadm-logout-timeout.patch +Patch12: 0012-default-file-zero-after-power-outage.patch +Patch13: 0013-Fix-issue-where-iscsi-iname-p-core-dumps.patch +Patch14: 0014-modify-iSCSI-shared-memory-permissions-for-logs.patch +Patch15: 0015-iscsi-Add-break-to-while-loop.patch +Patch16: 0016-iscsi-fix-fd-leak.patch +Patch17: 0017-Fix-devel-without-node-header-files.patch +Patch18: 0018-resolve-compilation-errors.patch + + +BuildRequires: flex bison doxygen kmod-devel systemd-units gcc git isns-utils-devel systemd-devel BuildRequires: autoconf automake libtool libmount-devel openssl-devel pkg-config gdb Provides: iscsi-initiator-utils @@ -107,7 +78,7 @@ Requires: man This contains man files for the using of %{name}. %prep -%autosetup -n open-iscsi-f3c8e90fc0894c088950a15ee6618b427f9e2457 -p1 +%autosetup -n open-iscsi-2.1.1 -p1 perl -i -pe 's|^exec_prefix = /$|exec_prefix = %{_exec_prefix}|' Makefile %build @@ -189,8 +160,11 @@ fi %{_mandir}/man8/* %changelog +* Thu Jul 9 2020 wuguanghao - 2.1.1-1 +- update open-iscsi version to 2.1.1-1 + * Sun Jul 5 2020 Zhiqiang Liu - 2.0.876-22 -- remove useless readme files. +- remove useless readme files * Mon Jun 15 2020 sunguoshuai - 2.0.876-21 - fix devel without node header files