aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-22mdev: re-initialize if uevent messages were lostJan Klötzke
If the netlink read() failed with ENOBUFS we know that we have missed at least one message due to a socket receive buffer overrun. The only way how to recover is to drop the old socket, open a fresh one and make a cold-plug scan of the current system state. Signed-off-by: Jan Klötzke <jan@kloetzke.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-22mdev: move daemon setup to dedicated functionJan Klötzke
Signed-off-by: Jan Klötzke <jan@kloetzke.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-22uevent: increase netlink buffer sizesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-22mdev: increase netlink buffer sizesJan Klötzke
The socket receive buffer turned out to be too small for real world systems. Use the same size as udevd to be on the safe side. As this is just a limit and the memory is not allocated by the kernel until really needed there is actually no memory wasted. Signed-off-by: Jan Klötzke <jan@kloetzke.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-22libbb: set netlink socket revbuf size before bindingJan Klötzke
As soon as the socket is bound it will receive messages. Make sure the recieve buffer size is increased before the first message is received. Signed-off-by: Jan Klötzke <jan@kloetzke.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-21lineedit: fix unicode characters in promptAudun-Marius Gangstø
function old new delta parse_and_put_prompt 779 823 +44 Signed-off-by: Audun-Marius Gangstø <audun@gangsto.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-21libiproute: reuse string constantsDenys Vlasenko
text data bss dec hex filename 1020826 559 5052 1026437 fa985 busybox_old 1020815 559 5052 1026426 fa97a busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-19volume_id: improve struct layout (smaller offesets, smaller insns on x86)Denys Vlasenko
function old new delta volume_id_probe_xfs 101 98 -3 volume_id_probe_vfat 827 824 -3 volume_id_probe_udf 541 538 -3 volume_id_probe_ubifs 67 64 -3 volume_id_probe_squashfs 86 83 -3 volume_id_probe_romfs 97 94 -3 volume_id_probe_reiserfs 246 243 -3 volume_id_probe_ocfs2 110 107 -3 volume_id_probe_ntfs 288 285 -3 volume_id_probe_nilfs 100 97 -3 volume_id_probe_minix 85 82 -3 volume_id_probe_luks 92 89 -3 volume_id_probe_linux_swap 251 248 -3 volume_id_probe_linux_raid 131 128 -3 volume_id_probe_lfs 62 59 -3 volume_id_probe_jfs 110 107 -3 volume_id_probe_iso9660 318 315 -3 volume_id_probe_f2fs 107 104 -3 volume_id_probe_exfat 285 282 -3 volume_id_probe_erofs 89 86 -3 volume_id_probe_cramfs 67 64 -3 volume_id_probe_btrfs 134 131 -3 volume_id_probe_bcache 107 104 -3 volume_id_probe_sysv 194 188 -6 volume_id_probe_hfs_hfsplus 518 512 -6 add_to_uuid_cache 271 265 -6 volume_id_probe_ext 131 122 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/27 up/down: 0/-96) Total: -96 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-19fix warning: label 'out1' defined but not usedCristian Ionescu-Idbohrn
Signed-off-by: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-18util-linux: support erofs filesystemNorbert Lange
Add erofs to the known volume_ids. function old new delta volume_id_probe_erofs - 89 +89 fs1 24 28 +4 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 1/0 up/down: 93/0) Total: 93 bytes Signed-off-by: Norbert Lange <nolange79@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16archival: avoid std namespace for local includesJoachim Nilsson
Avoid using same include file naming pattern as available in GLIBC. Renamed to match grp_.h et al. Signed-off-by: Joachim Nilsson <troglobit@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16ash: make interactive ^C break out of PS2 modeDenys Vlasenko
Based on patch by Joachim Nilsson <troglobit@gmail.com> function old new delta pgetc 570 547 -23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16hush: make interactive ^C break out of PS2 modeDenys Vlasenko
function old new delta syntax_error_unterm_str - 26 +26 parse_stream 2238 2251 +13 fgetc_interactive 243 249 +6 parse_dollar 824 817 -7 syntax_error_unterm_ch 29 21 -8 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/2 up/down: 45/-15) Total: 30 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16syslogd: delay PID file creation until syslogd is readyJoachim Nilsson
This patch moves the creation of the PID file until after syslogd has set up signal handlers and is ready. Signed-off-by: Joachim Nilsson <troglobit@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16login: update UTMP before forkingJoachim Nilsson
/bin/login updates the preliminary UTMP record created by /bin/getty for $LOGNAME. However, if the PID of login is not the same as getty, then it will create a new entry. This causes GLIBC getlogin(3) to return the string 'LOGIN' (set by getty) instead of $LOGNAME. This affects tools like /usr/bin/logname but also various 3rd party PAM applications. Signed-off-by: Joachim Nilsson <troglobit@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-16awk: fix dodgy multi-char separators splitting logicDenys Vlasenko
function old new delta awk_split 521 484 -37 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-15chrt: support for musl C libraryChristian Eggers
musl "implements" several sched_xxx() functions by returning ENOSYS. As an alternative, either pthread_(g|s)etschedparam() or direct syscalls can be used. References: https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/schedutils/chrt.c?id=fcc3078754291d2f5121797eb91b364f8e24b2f1 References: http://git.musl-libc.org/cgit/musl/commit/src/sched/sched_setscheduler.c?id=1e21e78bf7a5c24c217446d8760be7b7188711c2 Signed-off-by: Christian Eggers <ceggers@arri.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-01hush: document bugs in [[ =~ ]] comparisonDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-31shell: update comments on the status of [[ ]] compatDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-31hush: add tests for unquoted < > in [[ ]]Denys Vlasenko
They pass. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-31shell: better support of [[ ]] bashismDenys Vlasenko
Still rather rudimentary for ash function old new delta binop 433 589 +156 check_operator 65 101 +36 done_word 736 769 +33 test_main 405 418 +13 parse_stream 2227 2238 +11 ops_texts 124 133 +9 ops_table 80 86 +6 run_pipe 1557 1562 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 8/0 up/down: 269/0) Total: 269 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-25od: unbreak itDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-25compat: move hexdump -R functionality to xxd -rDenys Vlasenko
function old new delta xxd_main 466 680 +214 packed_usage 33474 33483 +9 hexdump_opts 17 16 -1 hexdump_main 565 401 -164 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/2 up/down: 223/-165) Total: 58 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-24hush: output bash-compat killing signal namesDenys Vlasenko
This significantly syncronises ash-signals and hush-signals tests. function old new delta process_wait_result 449 450 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-24hush: do not print killing signal name in `cmd_whihc_dies_on_signal`Denys Vlasenko
function old new delta process_wait_result 438 449 +11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-20hexdump: fix dup block comparisonDenys Vlasenko
function old new delta bb_dump_dump 1523 1520 -3 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-20xxd: fix printing of trailing spacesDenys Vlasenko
function old new delta bb_dump_dump 1497 1523 +26 xxd_main 459 466 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 33/0) Total: 33 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-07uudecode: fix possible signed char bugDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-06avoid using strok - eliminates use of hidden global variableDenys Vlasenko
function old new delta udhcp_str2optset 616 650 +34 setpriv_main 950 975 +25 switch_root_main 688 706 +18 parse 958 970 +12 getopt_main 622 628 +6 parse_resolvconf 302 306 +4 mpstat_main 1139 1142 +3 static.p 4 - -4 cdcmd 717 702 -15 strtok 148 - -148 ------------------------------------------------------------------------------ (add/remove: 0/3 grow/shrink: 7/1 up/down: 102/-167) Total: -65 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-06httpd: code shrinkXabier Oneca
Use decode_base64() from uuencode.c when uudecode/base64 applets are included. That function is bigger than httpd's decodeBase64(), so we use the old one when those applets are disabled. Bloat-o-meter when one of those is enabled: function old new delta handle_incoming_and_exit 2371 2265 -106 Signed-off-by: Xabier Oneca <xoneca@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-03ip rule: add support for fwmark/fwmask for policy routingRui Salvaterra
This adds support for fwmark/fwmask in ip rule which is needed, for example, in OpenWrt's mwan3. Masks are supported since Linux 2.6.19. Fixes: https://bugs.busybox.net/show_bug.cgi?id=11621 Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-02tar: fix fallout of last_char_is(NULL) no longer being allowedDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01udhcp: remove struct packing attribute, eliminates gcc-9.xDenys Vlasenko
"error: taking address of packed member of 'struct ip_udp_dhcp_packet' may result in an unaligned pointer value" here: udhcp_dump_packet(&packet.data); and in other places. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01libbb: shrink recursive_action() by reducing memory pressureDenys Vlasenko
function old new delta recursive_action1 - 316 +316 file_action_grep 161 164 +3 add_to_prg_cache_if_socket 202 205 +3 depmod_main 509 511 +2 writeFileToTarball 488 489 +1 parse_module 281 282 +1 fileAction 207 208 +1 act 189 190 +1 add_to_dirlist 65 64 -1 writeTarFile 196 194 -2 uuidcache_init 47 45 -2 uuidcache_check_device 109 107 -2 true_action 8 6 -2 run_parts_main 310 308 -2 netstat_main 534 532 -2 lsusb_main 29 27 -2 lspci_main 45 43 -2 initial_scan 138 136 -2 grep_main 845 843 -2 find_main 482 480 -2 config_file_action 437 435 -2 chmod_main 142 140 -2 dirAction 14 10 -4 diff_main 1544 1540 -4 chown_main 154 148 -6 skip_dir 136 129 -7 dir_act 191 184 -7 recursive_action 453 69 -384 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 7/20 up/down: 328/-439) Total: -111 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01tydy up a few uses of recursive_action(), no logic changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01gcc-9.x warning fixesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01libbb: do not open-code __errno_location() callDenys Vlasenko
Thanks dalias! Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01shell: remove FAST_FUNC from a static functionDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01libbb: extend "errno pointer" trick to other than __GLIBC__Denys Vlasenko
Savings on musl: function old new delta resume_main 582 614 +32 lbb_prepare - 20 +20 seq_main 432 449 +17 fgetsetversion 74 88 +14 ... script_main 1207 1180 -27 close_silently 28 - -28 shell_builtin_ulimit 655 626 -29 lineedit_read_key 280 247 -33 ------------------------------------------------------------------------------ (add/remove: 2/1 grow/shrink: 25/123 up/down: 182/-882) Total: -700 bytes text data bss dec hex filename 1005858 551 5676 1012085 f7175 busybox_old 1005136 551 5680 1011367 f6ea7 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01mount: support the sizelimit and offset option for loop devicesSteffen Trumtrar
Starting with linux kernel v5.4 squashfs has a more strict parameter checking implemented. Unlike util-linux mount, busybox never supported the sizelimit option but simply forwards it to the kernel. Since v5.4 mounting will fail with squashfs: Unknown parameter 'sizelimit' Support the sizelimit parameter by setting it in the LOOP_SET_STATUS64 structure before handing it to the kernel. While at it also add support for the offset option, which currently will always be set to 0. function old new delta cut_out_ull_opt - 167 +167 singlemount 1230 1266 +36 set_loop 834 862 +28 losetup_main 479 483 +4 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 3/0 up/down: 235/0) Total: 235 bytes Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-30libbb: fold common64_hash() into its only userDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-30xargs: fix -I SUBSTR behaviourDenys Vlasenko
function old new delta process_stdin_with_replace 165 204 +39 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-29shell: add testsuite for "wait $pid" waiting for other tasksDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-29ash: jobs: Fix waitcmd busy loopDenys Vlasenko
Upstream commit: Date: Tue, 2 Jun 2020 23:46:48 +1000 jobs: Fix waitcmd busy loop We need to clear gotsigchld in waitproc because it is used as a loop conditional for the waitcmd case. Without it waitcmd may busy loop after a SIGCHLD. This patch also changes gotsigchld into a volatile sig_atomic_t to prevent compilers from optimising its accesses away. Fixes: 6c691b3e5099 ("jobs: Only clear gotsigchld when waiting...") Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> This change also incorporates other changes to bring us closer to upstream. function old new delta dowait 553 636 +83 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-29ash: jobs: Fix infinite loop in waitprocDenys Vlasenko
Upstream commit: Date: Fri, 10 Apr 2020 21:03:09 +1000 jobs: Fix infinite loop in waitproc After we changed the resetting of gotsigchld so that it is only done if jp is NULL, we can now get an infinite loop in waitproc if gotsigchld is set but there is no outstanding child because everything had been waited for previously without gotsigchld being zeroed. This patch fixes it by always zeroing gotsigchld as we did before. The bug that the previous patch was trying to fix is now resolved by switching the blocking mode to DOWAIT_NORMAL after the specified job has been completed so that we really do wait for all outstanding dead children. Reported-by: Harald van Dijk <harald@gigawatt.nl> Fixes: 6c691b3e5099 ("jobs: Only clear gotsigchld when waiting...") Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta dowait 553 631 +78 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-29ash: remove a tentative TODO, it's a wrong ideaDenys Vlasenko
Upstream tried it, and then reverted by: From: Herbert Xu <herbert@gondor.apana.org.au> Date: Tue, 26 May 2020 23:19:05 +1000 parser: Fix double-backslash nl in old-style command sub Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-09-29ntpd: fix the case where two replies received at once and first one causes a ↵Denys Vlasenko
step function old new delta recv_and_process_peer_pkt 2476 2486 +10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-08-16httpd: Make Deny/Allow by IP config support optionalSergey Ponomarev
When disabled: function old new delta if_ip_denied_send_HTTP_FORBIDDEN_and_exit 52 - -52 handle_incoming_and_exit 2201 2097 -104 scan_ip 170 - -170 parse_conf 1365 1065 -300 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 0/2 up/down: 0/-626) Total: -626 bytes Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-08-15httpd: Support caching via ETag headerSergey Ponomarev
If server responds with ETag then next time client can resend it via If-None-Match header. Then httpd will check if file wasn't modified and if not return 304 Not Modified status code. The ETag value is constructed from file's last modification date in unix epoch and it's size: "hex(last_mod)-hex(file_size)" e.g. "5e132e20-417" (with quotes). That means that it's not completely reliable as hash functions but fair enough. The same form of ETag is used by Nginx so load balancing of static content is safe. function old new delta handle_incoming_and_exit 2135 2201 +66 http_response 88 96 +8 send_headers 676 683 +7 parse_conf 1362 1365 +3 http_response_type 22 24 +2 send_file_and_exit 847 841 -6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/1 up/down: 86/-6) Total: 80 bytes Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-08-15httpd: Don't add Last-Modified header to responseSergey Ponomarev
The Last-Modified header is used for caching. The client (browser) will send back the received date to server via If-Modified-Since request header. But both headers MUST be an RFC 1123 formatted string. And the formatting consumes resources on request parsing and response generation. Instead we can use ETag header. This simplifies logic and the only downside is that in JavaScript the document.lastModified will return null. Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>