From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 27 11:35:02 2025 Received: (at submit) by debbugs.gnu.org; 27 Mar 2025 15:35:03 +0000 Received: from localhost ([127.0.0.1]:50912 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txpFz-0002gC-26 for submit@debbugs.gnu.org; Thu, 27 Mar 2025 11:35:02 -0400 Received: from lists.gnu.org ([2001:470:142::17]:48262) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txpFv-0002fC-S2 for submit@debbugs.gnu.org; Thu, 27 Mar 2025 11:34:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1txpFq-0002Qy-5O for bug-gnu-emacs@gnu.org; Thu, 27 Mar 2025 11:34:50 -0400 Received: from mail-4322.protonmail.ch ([185.70.43.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1txpFn-0005n1-I7 for bug-gnu-emacs@gnu.org; Thu, 27 Mar 2025 11:34:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1743089676; x=1743348876; bh=qeHVZBxVVMm6hbVDkYN+GmTtMH0syvuuwZ4YAENGhH8=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=gJ/b9mMYR+/B/MC/3GjYCe14FMmhp2WZlatIrYZyjaUpBOvUBfTnLRF0w602ywFtM EMeswyx3IKuNusF2zHYwhze8e9WXEE409Jz+xIHUQZQ+3W0W04bHNkiDiDB3dTKtVS H3/Xrpumzyehrb66JSsvSP/qbIYR/LxQtgOccz18ITcyft+UKypwikbuF/C+OHnXmE ivSNrWewxfteycwjr5dAIWMc8RlwU9gXri4EP2b951MQa3nlC97AABAdqjvjf+hsDz s/phUWG++bcmtUJ00eKUI+YTa34l21RUPunNf++lji3pqUGtTBFU+8YExTjYeG3WVs Qkyh9bKB3WF8A== Date: Thu, 27 Mar 2025 15:34:31 +0000 To: bug-gnu-emacs@gnu.org From: Pip Cet Subject: 31.0.50; Crash in Finsert_file_contents, file size changed Message-ID: <8734eyqyho.fsf@protonmail.com> Feedback-ID: 112775352:user:proton X-Pm-Message-ID: c1b8bf6d185ad6b7b4e287bb6002273e90bcf7dd MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.70.43.22; envelope-from=pipcet@protonmail.com; helo=mail-4322.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) I experienced a crash on the feature/igc branch (unfortunately, with local modifications) in a long-running session. I still have the (very large) coredump file so I can do some limited post-mortem debugging of the session, but I think I've identified the bug and we can just fix it instead. Note that line numbers will probably be off in the backtrace because of the local modifications. The crash happened when a buffer showing config.log in an Emacs directory auto-reverted while I was running ./configure in that directory in another shell buffer. After looking at this more closely, I think it's a bug in Finsert_file_contents, which currently assumes that a call to emacs_fd_fstat establishes st_size as an upper limit of how many characters read from the beginning of the file can match the current buffer. Most likely, the race window is so small that this happens only very rarely on the master branch, but feature/igc introduces the occasional unexpected delay so is more vulnerable to such bugs (see also bug#74590, which also is most likely explained by a delay introduced by MPS exposing a previously-latent bug). However, I believe this isn't likely to be an MPS-specific bug. The crash happened in this line/call in fileio.c: =09 if (overlap > 0) =09 same_at_end +=3D overlap; =09 same_at_end_charpos =3D BYTE_TO_CHAR (same_at_end); <<<<<< HERE =09 /* Arrange to read only the nonmatching middle part of the file. */ =09 beg_offset +=3D same_at_start - BEGV_BYTE; =09 end_offset -=3D ZV_BYTE - same_at_end; At the time: same_at_start =3D 38706 same_at_end =3D 1499444 overlap =3D 25 replace_handled =3D false giveup_match_end =3D false regular =3D true coding =3D { st =3D { st_size =3D 38681, } current_buffer->text->z_byte =3D 1499420 end =3D Qnil current_buffer->text->gpt =3D 1399068 current_buffer->text->beg + 38681 =3D "configure:10959: $? =3D 0\nc= onfigure:10996: result: none needed\n..." coding =3D { id =3D 1, result =3D CODING_RESULT_SUCCESS, decoder =3D 0x5555556c7f6c , encoder =3D 0x5555556c80c1 } So the BYTE_TO_CHAR failed because same_at_end was out of range after overlap was added to it. Given the calculation of overlap as: =09 overlap =3D (same_at_start - BEGV_BYTE =09=09 - (same_at_end =09=09=09+ (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE)); I believe the intention was for same_at_start - BEGV_BYTE never to exceed st.st_size or end_offset (the two are the same here). See below for why I think that the overlap calculation should also subtract beg_offset from this value. same_at_start is set here: =09 int nread =3D emacs_fd_read (fd, read_buf, sizeof read_buf); =09 int bufpos =3D 0; =09 while (bufpos < nread && same_at_start < ZV_BYTE =09=09 && FETCH_BYTE (same_at_start) =3D=3D read_buf[bufpos]) =09 same_at_start++, bufpos++; which is called some time after: if (emacs_fd_fstat (fd, &st) !=3D 0) report_file_error ("Input file status", orig_filename); so it seems entirely possible to me that the file grew by the time we set same_at_start, leading to the backtrace. The extra text written appears to have been "configure:10959: $? =3D 0\n" My impression is that overlap should have been calculated as 0 (or a negative number), not 25, because only one byte matches at the end of the buffer (which ends in "s\n") and same_at_end was thus, rightfully, 1494419, one less than Z_BYTE =3D ZV_BYTE. This code is very hard to understand; I believe that's because it doesn't currently always do the right thing, particularly not if st_size changes. However, a preliminary suggestion for fixing this follows: Let's add an additional condition to the loop counting bytes for same_at_start, so it never exceeds end_offset - beg_offset + BEGV_BYTE, and a symmetric condition in the loop counting bytes for same_at_end, so it never becomes less than ZV_BYTE - (end_offset - beg_offset - same_at_start + BEGV_BYTE). This would fix both this bug and what seems to me to be a faulty calculation, failing to detect an overlap, in the case where beg_offset is !=3D 0. IOW, we would fix the overlap calculation and make it so no overlap can ever happen, after which the overlap code can be removed. In addition, this code: /* If the file matches the buffer completely, =09 there's no need to replace anything. */ if (same_at_start - BEGV_BYTE =3D=3D end_offset - beg_offset) =09{ =09 emacs_fd_close (fd); =09 clear_unwind_protect (fd_index); =09 /* Truncate the buffer to the size of the file. */ =09 del_range_1 (same_at_start, same_at_end, 0, 0); =09 goto handled; =09} confuses me, because same_at_start and same_at_end are byte positions and del_range_1 takes character positions. I expect it's hit very rarely except when same_at_start =3D=3D same_at_end or same_at_start =3D=3D BEGV_BYTE =3D=3D BEGV, and del_range_1 is forgiving in these cases. Backtrace: #0 terminate_due_to_signal (sig=3D6, backtrace_limit=3D2147483647) at emac= s.c:425 #1 0x000055555587f71b in die (msg=3D0x555555a597b8 "BUF_BEG_BYTE (b) <=3D = bytepos && bytepos <=3D BUF_Z_BYTE (b)", file=3D0x555555a5974c "marker.c", = line=3D330) at alloc.c:8064 #2 0x000055555581e011 in buf_bytepos_to_charpos (b=3D0x7ff8ef791a58, bytep= os=3D1499444) at marker.c:330 #3 0x0000555555829246 in BYTE_TO_CHAR (bytepos=3D1499444) at /home/pip/ema= cs-20250320/src/buffer.h:1204 #4 0x0000555555833950 in Finsert_file_contents (filename=3D0x7ff8ef797af5,= visit=3D0x38, beg=3D0x0, end=3D0x0, replace=3D0xc908) at fileio.c:4547 From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 27 12:21:45 2025 Received: (at 77315) by debbugs.gnu.org; 27 Mar 2025 16:21:45 +0000 Received: from localhost ([127.0.0.1]:51041 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txpzE-0001ei-IT for submit@debbugs.gnu.org; Thu, 27 Mar 2025 12:21:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52054) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txpz9-0001dR-Pa for 77315@debbugs.gnu.org; Thu, 27 Mar 2025 12:21:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1txpz4-0003kW-0R; Thu, 27 Mar 2025 12:21:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=j+xEHRLpVoSEpLz6RGGdCunc2joK1T+HTbkFRKujKh4=; b=o/R+XbRfeO4B iAo0Rcz0YqiP0W+6UTuDSPrZGy+D5c0YthUZAz1Z6vzdU2VJQB0/04qBxjNE4hNQqNp2dtlqqQ9fD ANbYYSrzd3vaZ2DQQzvWhyNrk8qKfKcbKomy8gQo4rFbhA4dxzjQk/weIkfmE2ceXuzAryOjurCZu FAvb7urzpbW6jaYgD0zhNiq49relJwok3dBMTHAC2FvqNo6X04cSXUQL/O2OfuJ/a4LApmNgaK2LY KfaJ33nBU9yGj2tpGbIDmagcKkUxUiBmnSAgTc/nLitvDYQNIzvyWCnw4FBD2Ib7yU9rN62nbpdy3 verQFwNEk50kwwjqFRxDlg==; Date: Thu, 27 Mar 2025 18:21:31 +0200 Message-Id: <86v7rubg1g.fsf@gnu.org> From: Eli Zaretskii To: Pip Cet , Paul Eggert In-Reply-To: <8734eyqyho.fsf@protonmail.com> (bug-gnu-emacs@gnu.org) Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed References: <8734eyqyho.fsf@protonmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 27 Mar 2025 15:34:31 +0000 > From: Pip Cet via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > I experienced a crash on the feature/igc branch (unfortunately, with > local modifications) in a long-running session. I still have the (very > large) coredump file so I can do some limited post-mortem debugging of > the session, but I think I've identified the bug and we can just fix it > instead. > > Note that line numbers will probably be off in the backtrace because of > the local modifications. > > The crash happened when a buffer showing config.log in an Emacs > directory auto-reverted while I was running ./configure in that > directory in another shell buffer. > > After looking at this more closely, I think it's a bug in > Finsert_file_contents, which currently assumes that a call to > emacs_fd_fstat establishes st_size as an upper limit of how many > characters read from the beginning of the file can match the current > buffer. > > Most likely, the race window is so small that this happens only very > rarely on the master branch, but feature/igc introduces the occasional > unexpected delay so is more vulnerable to such bugs (see also > bug#74590, which also is most likely explained by a delay introduced by > MPS exposing a previously-latent bug). However, I believe this isn't > likely to be an MPS-specific bug. Adding Paul to the discussion. AFAIR, insert-file-contents needs to be completely rewritten to handle such situations. If the file is being modified by another program while we are trying to figure out the overlap (because REPLACE was no-nil), then I'm not sure I understand how can REPLACE and overlap work at all, since the data changes under our feet as we go. So maybe if we detect that this is happening, we should give up on being smart and decide that there's no overlap at all. > The crash happened in this line/call in fileio.c: > > if (overlap > 0) > same_at_end += overlap; > same_at_end_charpos = BYTE_TO_CHAR (same_at_end); <<<<<< HERE > > /* Arrange to read only the nonmatching middle part of the file. */ > beg_offset += same_at_start - BEGV_BYTE; > end_offset -= ZV_BYTE - same_at_end; > > At the time: > > same_at_start = 38706 > same_at_end = 1499444 > overlap = 25 > replace_handled = false > giveup_match_end = false > regular = true > coding = { > > st = { > st_size = 38681, > } > > current_buffer->text->z_byte = 1499420 > end = Qnil > current_buffer->text->gpt = 1399068 > current_buffer->text->beg + 38681 = "configure:10959: $? = 0\nconfigure:10996: result: none needed\n..." > > coding = { > id = 1, > result = CODING_RESULT_SUCCESS, > decoder = 0x5555556c7f6c , > encoder = 0x5555556c80c1 > } > > So the BYTE_TO_CHAR failed because same_at_end was out of range after > overlap was added to it. Given the calculation of overlap as: > > overlap = (same_at_start - BEGV_BYTE > - (same_at_end > + (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE)); > > I believe the intention was for same_at_start - BEGV_BYTE never to > exceed st.st_size or end_offset (the two are the same here). See below > for why I think that the overlap calculation should also subtract > beg_offset from this value. > > same_at_start is set here: > > int nread = emacs_fd_read (fd, read_buf, sizeof read_buf); > int bufpos = 0; > while (bufpos < nread && same_at_start < ZV_BYTE > && FETCH_BYTE (same_at_start) == read_buf[bufpos]) > same_at_start++, bufpos++; > > which is called some time after: > > if (emacs_fd_fstat (fd, &st) != 0) > report_file_error ("Input file status", orig_filename); > > so it seems entirely possible to me that the file grew by the time we > set same_at_start, leading to the backtrace. > > The extra text written appears to have been > > "configure:10959: $? = 0\n" > > My impression is that overlap should have been calculated as 0 (or a > negative number), not 25, because only one byte matches at the end of > the buffer (which ends in "s\n") and same_at_end was thus, rightfully, > 1494419, one less than Z_BYTE = ZV_BYTE. > > This code is very hard to understand; I believe that's because it > doesn't currently always do the right thing, particularly not if st_size > changes. However, a preliminary suggestion for fixing this follows: > > Let's add an additional condition to the loop counting bytes for > same_at_start, so it never exceeds end_offset - beg_offset + BEGV_BYTE, > and a symmetric condition in the loop counting bytes for same_at_end, so > it never becomes less than ZV_BYTE - (end_offset - beg_offset - > same_at_start + BEGV_BYTE). > > This would fix both this bug and what seems to me to be a faulty > calculation, failing to detect an overlap, in the case where beg_offset > is != 0. > > IOW, we would fix the overlap calculation and make it so no overlap can > ever happen, after which the overlap code can be removed. > > In addition, this code: > > /* If the file matches the buffer completely, > there's no need to replace anything. */ > if (same_at_start - BEGV_BYTE == end_offset - beg_offset) > { > emacs_fd_close (fd); > clear_unwind_protect (fd_index); > > /* Truncate the buffer to the size of the file. */ > del_range_1 (same_at_start, same_at_end, 0, 0); > goto handled; > } > > confuses me, because same_at_start and same_at_end are byte positions > and del_range_1 takes character positions. I expect it's hit very > rarely except when same_at_start == same_at_end or same_at_start == > BEGV_BYTE == BEGV, and del_range_1 is forgiving in these cases. > > Backtrace: > > #0 terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:425 > #1 0x000055555587f71b in die (msg=0x555555a597b8 "BUF_BEG_BYTE (b) <= bytepos && bytepos <= BUF_Z_BYTE (b)", file=0x555555a5974c "marker.c", line=330) > at alloc.c:8064 > #2 0x000055555581e011 in buf_bytepos_to_charpos (b=0x7ff8ef791a58, bytepos=1499444) at marker.c:330 > #3 0x0000555555829246 in BYTE_TO_CHAR (bytepos=1499444) at /home/pip/emacs-20250320/src/buffer.h:1204 > #4 0x0000555555833950 in Finsert_file_contents (filename=0x7ff8ef797af5, visit=0x38, beg=0x0, end=0x0, replace=0xc908) at fileio.c:4547 > > > > > From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 27 13:23:04 2025 Received: (at 77315) by debbugs.gnu.org; 27 Mar 2025 17:23:04 +0000 Received: from localhost ([127.0.0.1]:51175 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txqwZ-0008No-8K for submit@debbugs.gnu.org; Thu, 27 Mar 2025 13:23:03 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:49742) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txqwS-0008M9-Ns for 77315@debbugs.gnu.org; Thu, 27 Mar 2025 13:23:01 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id A89473C23F3AD; Thu, 27 Mar 2025 10:22:49 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id 6f571Z7B7PzU; Thu, 27 Mar 2025 10:22:49 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 6EF7E3C23F3AE; Thu, 27 Mar 2025 10:22:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 6EF7E3C23F3AE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1743096169; bh=qar5xLIHCPVsSSz0JUbquIboAarzjNBuRCHyYjniki8=; h=Message-ID:Date:MIME-Version:To:From; b=Ib7YGSezCnkHBpVCtj5cBPdVdTttGjCj2LFm7oqYM7XI7n6x0k8fTdIeGKGCUebTg 9qvrV0Zkp43EjMSjEH3E4fVAEF+PNxgnZJeQZgWImFcozrY1GX1TXWRuiveTIAG9ng G42ooge5u8sXqRdrWJXZsPjLUWbED4AQfACb0TsulkypbYiikhAxYH6kkCB0CznxAD DeYS9yO0XYEdGzZAdEcDxIlrEIysXjrgeIEVOR8IJd6R0A9m5RZ9dfZAziGKoOoFgL kcJnLsngkHjnOnWdt2Cvd/ho3JnTTvbeadeEHhPub8NDeWO6PNKJXbLV4CmBfy9J60 FC9cnmlp+dSxQ== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id rdTaCLX6R8S6; Thu, 27 Mar 2025 10:22:49 -0700 (PDT) Received: from [10.10.33.175] (unknown [96.69.135.29]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 174893C23F3AD; Thu, 27 Mar 2025 10:22:49 -0700 (PDT) Message-ID: <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> Date: Thu, 27 Mar 2025 11:22:48 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed To: Eli Zaretskii , Pip Cet References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> Content-Language: en-US From: Paul Eggert In-Reply-To: <86v7rubg1g.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 3/27/25 10:21, Eli Zaretskii wrote: > AFAIR, insert-file-contents needs to be completely rewritten to handle > such situations. I drafted something a while ago along those lines but never got around to finish it. I'll try to bump the priority. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 27 13:48:16 2025 Received: (at 77315) by debbugs.gnu.org; 27 Mar 2025 17:48:16 +0000 Received: from localhost ([127.0.0.1]:51230 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txrKy-0005Va-5P for submit@debbugs.gnu.org; Thu, 27 Mar 2025 13:48:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44468) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txrKu-0005V0-SY for 77315@debbugs.gnu.org; Thu, 27 Mar 2025 13:48:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1txrKo-0006ys-5j; Thu, 27 Mar 2025 13:48:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Qp4Xh08wU0cu5bG00licI8hDOyGcXnL8R8xBKkWQhUw=; b=Vx8NBJsXTnOf SWU9t/QvMcEWn2IMe4t8gvjyO8zmWxf5k60N+6l0NBn6Ql6ym8KlvswxIcygC7svMCL0LeGZZiKN0 2fyGAyKCUS4ZYgJI7ZI4FQxKbk+XiMxxpSzPsXj4pVfHUaIjBXWixeMVq5O35fx1/79YhwPAW3IzC AlEijHGFYF4RBXLnCDcmfPYEg2+74PpPhzBu/SSfAck5CRHFcJoNi0Ze8nMad74pVD3U2FFMh0Dxy SfRjdynKnjEdTkY0BJ46rMqowwXvIocJ6voysJnGYkSbrukLYP45112qTckOGRQcmxgHfL5D3ArEA sr0DRQPnjI7xCwY3Tkmmmw==; Date: Thu, 27 Mar 2025 19:48:02 +0200 Message-Id: <86ldsqbc19.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert In-Reply-To: <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> (message from Paul Eggert on Thu, 27 Mar 2025 11:22:48 -0600) Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 27 Mar 2025 11:22:48 -0600 > Cc: 77315@debbugs.gnu.org > From: Paul Eggert > > On 3/27/25 10:21, Eli Zaretskii wrote: > > AFAIR, insert-file-contents needs to be completely rewritten to handle > > such situations. > > I drafted something a while ago along those lines but never got around > to finish it. I'll try to bump the priority. Thanks in advance. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 27 15:17:59 2025 Received: (at 77315) by debbugs.gnu.org; 27 Mar 2025 19:17:59 +0000 Received: from localhost ([127.0.0.1]:51391 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txsjn-00066z-1X for submit@debbugs.gnu.org; Thu, 27 Mar 2025 15:17:59 -0400 Received: from mail-10629.protonmail.ch ([79.135.106.29]:44457) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txsji-00066h-Qt for 77315@debbugs.gnu.org; Thu, 27 Mar 2025 15:17:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1743103068; x=1743362268; bh=KLX5FrfAuVDFZxN9aeapU/VpRzItjOifOdlV/40Gszk=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post; b=HO8vrQJupOHpNKfxvlr31AEWsaavGDLV5adxWROhYVSp54apnffuzXuAfG0WJjsvT F7OHkaKxkOkO1y/zciQScIszuvfqKCDcWoK0i5ZGVXmh4h6W5W0zuFOMdDSePe2Ygb bO2vjlXlC9HlhCMgXlNtOnvAncYtJPlnzlK5QRqV9dnsmGUCPON/L+WvzfEVOaOh3v UhrQfX+AdIEZCFR3MBgKuazIaffEL1tPCNWe8nT6EfzTF8jEQVD2OnjJ2f2yQgKSWx nhkeugTpk9N5ZGhBYJXkDhVrqWi8MC6fjS4LbC3jTP/A7TT/HWBVW2VwPbwBJ4fKD1 JPWyp04jAMnhQ== Date: Thu, 27 Mar 2025 19:17:45 +0000 To: Paul Eggert From: Pip Cet Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed Message-ID: <871pui8erw.fsf@protonmail.com> In-Reply-To: <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> Feedback-ID: 112775352:user:proton X-Pm-Message-ID: 6cda6a05804800c142c01a89fd05d35aeffa1aa2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) "Paul Eggert" writes: > On 3/27/25 10:21, Eli Zaretskii wrote: >> AFAIR, insert-file-contents needs to be completely rewritten to handle >> such situations. > > I drafted something a while ago along those lines but never got around > to finish it. I'll try to bump the priority. Thank you both! I'll wait, then. I'm perfectly happy reading "random" data if a file is changed while being read, FWIW, but I see no reason to crash, and it's also somewhat undesirable to throw an error in this situation. Pip From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 13 03:13:14 2025 Received: (at 77315) by debbugs.gnu.org; 13 Apr 2025 07:13:14 +0000 Received: from localhost ([127.0.0.1]:37847 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u3rWh-0000oe-N8 for submit@debbugs.gnu.org; Sun, 13 Apr 2025 03:13:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60790) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u3rWc-0000mV-5w for 77315@debbugs.gnu.org; Sun, 13 Apr 2025 03:13:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u3rWW-00014C-3Y; Sun, 13 Apr 2025 03:13:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WpOTmM1Eq0ooAp/Z9tkEqsSUegMkT0gq47fZ5TEJE4I=; b=eRrN+um28Xh+ W5r7myNfhdIzgvP6Yxc3EsITyGwv+vgkJgUmOSPdrQt+PdLobMunxy34wptJgIWm1wwuJ/Sl8Ovwb iyf7ZQROUO98ZBP/5Oq76owOzdj8lDeAC8O+qkIMvVZ3AJADZu5MYzSGUXHe90NogdZTWQuceSYgR ZO5q71C49yOWwn1HYptFIBNfosGcY3zE4ToOgZLy5pxTX+FTEVOrWOOAC5MJsnKg46Idg/ZEUnpiY nP/kougDRWYNmLPuh6FNR7KdKoxVdswdNMHjZaPSk5UZWh8a4gyMZIrb6kCLQB5EeRbkDV4nQJUWY 5pGpUZxdqF+hOrGrf1RIcw==; Date: Sun, 13 Apr 2025 10:12:57 +0300 Message-Id: <86tt6slekm.fsf@gnu.org> From: Eli Zaretskii To: eggert@cs.ucla.edu In-Reply-To: <86ldsqbc19.fsf@gnu.org> (message from Eli Zaretskii on Thu, 27 Mar 2025 19:48:02 +0200) Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com > Date: Thu, 27 Mar 2025 19:48:02 +0200 > From: Eli Zaretskii > > > Date: Thu, 27 Mar 2025 11:22:48 -0600 > > Cc: 77315@debbugs.gnu.org > > From: Paul Eggert > > > > On 3/27/25 10:21, Eli Zaretskii wrote: > > > AFAIR, insert-file-contents needs to be completely rewritten to handle > > > such situations. > > > > I drafted something a while ago along those lines but never got around > > to finish it. I'll try to bump the priority. > > Thanks in advance. Did you have a chance to make some progress in this matter? From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 14 14:53:50 2025 Received: (at 77315) by debbugs.gnu.org; 14 Apr 2025 18:53:50 +0000 Received: from localhost ([127.0.0.1]:49069 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u4OwI-0003r1-AR for submit@debbugs.gnu.org; Mon, 14 Apr 2025 14:53:50 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:44278) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u4OwF-0003qf-HD for 77315@debbugs.gnu.org; Mon, 14 Apr 2025 14:53:47 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 2F8753C01086B; Mon, 14 Apr 2025 11:53:41 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id FPuwdc6vSEAs; Mon, 14 Apr 2025 11:53:41 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id DF8073C01086F; Mon, 14 Apr 2025 11:53:40 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu DF8073C01086F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1744656820; bh=S3WtbqbB290BaWmZQmFxRFUuq/al68greS7Aam9pcGw=; h=Message-ID:Date:MIME-Version:To:From; b=mXbGmAukMGPdVwmnugxSwsTtoxaORTNIcUh/JFhTiqL/9rMba5Qj3V5S11xwp5z4A 4rK55zxftMCvaQlYknvwiLZrOjR4eBnA1lluMEShuL9heD7nXFHYk61UCPpC87zeOO tBrrqc++rh41PyNuGa/t2IUcEaGrAhIlhAzoIPQAeTX0jAyYN6KmCDvE8euMrXciXv 8vNezg3z2oC7H69lHWyz+t92jSqqycEUblWS4jquxRbbmTRjc9kAC8Zcc1HqV9hzD2 4A1ZVNiw7hwoEBFtvIUTSHGYaugYj0Bui6gBI1/98d0b68bvXCuWJ1sRnVRKgLB8HT AWTOgBREu69Wg== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id 7dU7VqZE5mTf; Mon, 14 Apr 2025 11:53:40 -0700 (PDT) Received: from [192.168.254.12] (unknown [47.147.225.25]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id C1A573C01086B; Mon, 14 Apr 2025 11:53:40 -0700 (PDT) Message-ID: Date: Mon, 14 Apr 2025 11:53:40 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed To: Eli Zaretskii References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <86tt6slekm.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-04-13 00:12, Eli Zaretskii wrote: >>> I drafted something a while ago along those lines but never got around >>> to finish it. I'll try to bump the priority. >> Thanks in advance. > Did you have a chance to make some progress in this matter? Not yet. Still on my list of things to do (but below filing taxes...). From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 07 06:52:14 2025 Received: (at 77315) by debbugs.gnu.org; 7 Jun 2025 10:52:14 +0000 Received: from localhost ([127.0.0.1]:47115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uNr9q-0006si-8o for submit@debbugs.gnu.org; Sat, 07 Jun 2025 06:52:14 -0400 Received: from mail-24417.protonmail.ch ([109.224.244.17]:20043) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uNr9n-0006sL-LU for 77315@debbugs.gnu.org; Sat, 07 Jun 2025 06:52:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1749293525; x=1749552725; bh=CPozf+OkbEKXp/LjGrTaDyXtV4RrGQpKKjcjnkbvqdM=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post; b=mY4A5D7/gddsZXSCpO+tJKIFlljcqaHDoPG39EBrGIdjCzXUcje7HDQ49gN8ntEpZ Q14xeEl+oiv7IlJIA/l5hksw96jsLOchTC+AzNXLs6lOzvQiBZ13sZualSKVqUaxzO hSncr6SMimzRpSlSlwrU9vwUH1ZEiojSA5mnYxekJb1fttuPzOj0nh8xvV2PAXGMi+ Z+zXSyzLI80d2s68wFZR3Cu596KqJ4pmjWW1AIWdRc5N1qKUwg0OdsBPPL3BOR4fVF Bikm+7DqW2voVisNzx6qRe6g1wqoLYXtmXramFWCqKV0JA6cjcPvygPbNm2KabAnJ5 8My4kvhOOZHxg== Date: Sat, 07 Jun 2025 10:52:00 +0000 To: Eli Zaretskii From: Pip Cet Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed Message-ID: <87v7p76cz7.fsf@protonmail.com> In-Reply-To: <86tt6slekm.fsf@gnu.org> References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> Feedback-ID: 112775352:user:proton X-Pm-Message-ID: afba6acd902d6984f908c1394a60a043ef1b168b MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, eggert@cs.ucla.edu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) "Eli Zaretskii" writes: >> Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com >> Date: Thu, 27 Mar 2025 19:48:02 +0200 >> From: Eli Zaretskii >> >> > Date: Thu, 27 Mar 2025 11:22:48 -0600 >> > Cc: 77315@debbugs.gnu.org >> > From: Paul Eggert >> > >> > On 3/27/25 10:21, Eli Zaretskii wrote: >> > > AFAIR, insert-file-contents needs to be completely rewritten to hand= le >> > > such situations. >> > >> > I drafted something a while ago along those lines but never got around >> > to finish it. I'll try to bump the priority. >> >> Thanks in advance. > > Did you have a chance to make some progress in this matter? I'm hitting this bug with some regularity (and working around it by force-returning from Finsert_file_contents in gdb) on the MPS branch. It's not a problem, but I am occasionally reminded it's still there :-) Pip From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 07 13:24:52 2025 Received: (at 77315) by debbugs.gnu.org; 7 Jun 2025 17:24:52 +0000 Received: from localhost ([127.0.0.1]:49466 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uNxHo-000240-2G for submit@debbugs.gnu.org; Sat, 07 Jun 2025 13:24:52 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:34420) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uNxHl-00023m-NN for 77315@debbugs.gnu.org; Sat, 07 Jun 2025 13:24:50 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 71B183C010860; Sat, 7 Jun 2025 10:24:43 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id s2IWx1bczkh2; Sat, 7 Jun 2025 10:24:43 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 48FB73C0149CF; Sat, 7 Jun 2025 10:24:43 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 48FB73C0149CF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1749317083; bh=CuGaPsxkpXfEyNyirOxDSLxZ6hT4JUiIkcscYexQ9ZQ=; h=Message-ID:Date:MIME-Version:To:From; b=q4C7i3Cnke4oK+Krx28RG8jjWHXxblfJPPgpegUCXzm06vz2ibbAQFejDurrEf8XK FtlwRqbc2m4wSeGs6NOTDuPsD8Ga+TqO3Tw3pfkf0lCB1hAQRogjO9YPS+oiVDNp1d DMGdZ1rNTfBxJeofxbcHaGhLGkpDQTd4WUp8EvPzVZDK0/53TrIvDSOSuT1sh7QJi7 nUalCaO69WWA26UZpVdOtKch7o6hnmFZfTO0YygjVhoE7BTqY+PaRzyq5Mih/RyZ5Y fmt23PVgoY3yTXYgG4RWJ3YuDljH085UdjnaUxSWDPEUjl+wKU2UJOeloVxLqfMyh1 Ljnlp/GiE7Cwg== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id ElFlavh3xocx; Sat, 7 Jun 2025 10:24:43 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-143-215-226.fdr01.snmn.ca.ip.frontiernet.net [47.143.215.226]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 27BC93C010860; Sat, 7 Jun 2025 10:24:43 -0700 (PDT) Message-ID: <33a8fa44-7c67-4dec-bbd3-45a7652ef87b@cs.ucla.edu> Date: Sat, 7 Jun 2025 10:24:42 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed To: Pip Cet , Eli Zaretskii References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> <87v7p76cz7.fsf@protonmail.com> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <87v7p76cz7.fsf@protonmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-06-07 03:52, Pip Cet wrote: > I'm hitting this bug with some regularity (and working around it by > force-returning from Finsert_file_contents in gdb) on the MPS branch. > It's not a problem, but I am occasionally reminded it's still there :-) Yes, sorry, I've been crunched doing real work. I have one issue to attend to with GNU 'factor' and then this is my top free-software issue. But final exams are next week so it won't happen right away. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 14 00:24:57 2025 Received: (at 77315) by debbugs.gnu.org; 14 Jul 2025 04:24:57 +0000 Received: from localhost ([127.0.0.1]:58428 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ubAkJ-0000gm-EO for submit@debbugs.gnu.org; Mon, 14 Jul 2025 00:24:57 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:47482) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ubAkF-0000gO-0b for 77315@debbugs.gnu.org; Mon, 14 Jul 2025 00:24:53 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id E2A583C01085C; Sun, 13 Jul 2025 21:24:44 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id 2POBSFRiAu1N; Sun, 13 Jul 2025 21:24:44 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id B74573C0149D0; Sun, 13 Jul 2025 21:24:44 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu B74573C0149D0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1752467084; bh=Peoj+VuP4S1iLlVLURfvngrWL9mC/45P2RKT0EQpjWk=; h=Message-ID:Date:MIME-Version:To:From; b=JjCUdIDtgKAP+vBqrxKf5JEICkjFF4edDRjZ0tNS3C0469xnUBI16y/Q6IeShmZ5Z akWYX799lsOY5adN3gwVvYtIWkKPQ2UcI+/zIhPtXJfTGI6TGuwBK907SMgtGwXIcK pd/W8UYV0bckFtDOyyqZU19AgJqEhsv8xrWOOK+EFlo+aEQVCjLqp2rqMsE9xQ7J2L bI0x4DaMxnHaXjbAF4syAfBgrCh/WqXsSs4D58Y+9B3qNYTh3jxduirL7KFeXXwVcA W7ySiNAtN3hQJ6yY8DktqtbQn0ECuE7k/MwcOh94Vr+fx3lEY8loovZRleO2Lkgouv cHJxD3xBshkWQ== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id iTNK1POmBIbG; Sun, 13 Jul 2025 21:24:44 -0700 (PDT) Received: from penguin.cs.ucla.edu (47-154-30-222.fdr01.snmn.ca.ip.frontiernet.net [47.154.30.222]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 8F5323C01085C; Sun, 13 Jul 2025 21:24:44 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------tQXG0AkDmOGzHTsaC9GRCJQI" Message-ID: <322339d6-7c61-4af2-acb0-a616aa6667d1@cs.ucla.edu> Date: Sun, 13 Jul 2025 21:24:44 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed To: Pip Cet References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> <87v7p76cz7.fsf@protonmail.com> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <87v7p76cz7.fsf@protonmail.com> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------tQXG0AkDmOGzHTsaC9GRCJQI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-06-07 03:52, Pip Cet wrote: > I'm hitting this bug with some regularity (and working around it by > force-returning from Finsert_file_contents in gdb) on the MPS branch. > It's not a problem, but I am occasionally reminded it's still there :-) I finally shook loose some free time to work on this, and installed a series of patches into master which I hope fix the bug. Please give the patches a try. For convenience in review, I'm attaching a single diff combining all the patches, or you can look in the Git repository if you prefer to see each of the two dozen or so patches individually. The fix for Bug#77315 itself is quite simple: just remove the overlap checks. Overlap is impossible and the checks have bugs which can crash Emacs. (At least, overlap is impossible if you assume the other patches I installed....) The other patches are ones that I discovered while reading the code in the neighborhood. I was working along the lines that Eli hinted at when he wrote "insert-file-contents needs to be completely rewritten to handle such situations". The basic idea is to not trust st_size and to assume that file contents and size can change at any moment. My goodness, what a mess insert-file-contents was and remains! I hope I fixed more bugs than I introduced.... --------------tQXG0AkDmOGzHTsaC9GRCJQI Content-Type: text/x-patch; charset=UTF-8; name="emacs-bug-77315.patch" Content-Disposition: attachment; filename="emacs-bug-77315.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZmlsZXMuZWwgYi9saXNwL2ZpbGVzLmVsCmluZGV4IDVmZWFh NDU2N2NhLi5jNDY3ZWRkNTI3YyAxMDA2NDQKLS0tIGEvbGlzcC9maWxlcy5lbAorKysgYi9s aXNwL2ZpbGVzLmVsCkBAIC0yNzM2LDI3ICsyNzM2LDI5IEBAIGZpbmQtZmlsZS1ub3NlbGVj dC0xCiAgICAgICAoYW5kIChub3QgcmF3ZmlsZSkKIAkgICAoc2V0LWJ1ZmZlci1tdWx0aWJ5 dGUgdCkpCiAgICAgICAoaWYgcmF3ZmlsZQotCSAgKGNvbmRpdGlvbi1jYXNlICgpCisJICAo Y29uZGl0aW9uLWNhc2UgZXJyCiAJICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQp CiAgICAgICAgICAgICAgICAgICAgIChlbmFibGUtbG9jYWwtdmFyaWFibGVzIG5pbCkpCiAJ CShpbnNlcnQtZmlsZS1jb250ZW50cy1saXRlcmFsbHkgZmlsZW5hbWUgdCkpCiAJICAgIChm aWxlLWVycm9yCi0JICAgICAod2hlbiAoYW5kIChmaWxlLWV4aXN0cy1wIGZpbGVuYW1lKQot CQkJKG5vdCAoZmlsZS1yZWFkYWJsZS1wIGZpbGVuYW1lKSkpCisJICAgICAod2hlbiAoZmls ZS1leGlzdHMtcCBmaWxlbmFtZSkKIAkgICAgICAgKGtpbGwtYnVmZmVyIGJ1ZikKLQkgICAg ICAgKHNpZ25hbCAnZmlsZS1lcnJvciAobGlzdCAiRmlsZSBpcyBub3QgcmVhZGFibGUiCi0J CQkJCSBmaWxlbmFtZSkpKQorCSAgICAgICAoc2lnbmFsICdmaWxlLWVycm9yCisJCSAgICAg ICAoaWYgKGZpbGUtcmVhZGFibGUtcCBmaWxlbmFtZSkKKwkJCSAgIChjZHIgZXJyKQorCQkJ IChsaXN0ICJGaWxlIGlzIG5vdCByZWFkYWJsZSIgZmlsZW5hbWUpKSkpCiAJICAgICA7OyBV bmNvbmRpdGlvbmFsbHkgc2V0IGVycm9yCiAJICAgICAoc2V0cSBlcnJvciB0KSkpCi0JKGNv bmRpdGlvbi1jYXNlICgpCisJKGNvbmRpdGlvbi1jYXNlIGVycgogCSAgICAobGV0ICgoaW5o aWJpdC1yZWFkLW9ubHkgdCkpCiAJICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGVu YW1lIHQpKQogCSAgKGZpbGUtZXJyb3IKLQkgICAod2hlbiAoYW5kIChmaWxlLWV4aXN0cy1w IGZpbGVuYW1lKQotCQkgICAgICAobm90IChmaWxlLXJlYWRhYmxlLXAgZmlsZW5hbWUpKSkK KwkgICAod2hlbiAoZmlsZS1leGlzdHMtcCBmaWxlbmFtZSkKIAkgICAgIChraWxsLWJ1ZmZl ciBidWYpCi0JICAgICAoc2lnbmFsICdmaWxlLWVycm9yIChsaXN0ICJGaWxlIGlzIG5vdCBy ZWFkYWJsZSIKLQkJCQkgICAgICAgZmlsZW5hbWUpKSkKKwkgICAgIChzaWduYWwgJ2ZpbGUt ZXJyb3IKKwkJICAgICAoaWYgKGZpbGUtcmVhZGFibGUtcCBmaWxlbmFtZSkKKwkJCSAoY2Ry IGVycikKKwkJICAgICAgIChsaXN0ICJGaWxlIGlzIG5vdCByZWFkYWJsZSIgZmlsZW5hbWUp KSkpCiAJICAgOzsgUnVuIGZpbmQtZmlsZS1ub3QtZm91bmQtZnVuY3Rpb25zIHVudGlsIG9u ZSByZXR1cm5zIG5vbi1uaWwuCiAJICAgKG9yIChydW4taG9vay13aXRoLWFyZ3MtdW50aWwt c3VjY2VzcyAnZmluZC1maWxlLW5vdC1mb3VuZC1mdW5jdGlvbnMpCiAJICAgICAgIDs7IElm IHRoZXkgZmFpbCB0b28sIHNldCBlcnJvci4KZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBi L3NyYy9maWxlaW8uYwppbmRleCA3NDhlOGFhZGMwYy4uOGUxYWM0MjcyM2QgMTAwNjQ0Ci0t LSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTg2MCw3ICs4NjAsNyBA QCBERUZVTiAoImZpbGUtbmFtZS1jb25jYXQiLCBGZmlsZV9uYW1lX2NvbmNhdCwgU2ZpbGVf bmFtZV9jb25jYXQsIDEsIE1BTlksIDAsCiAgIHB0cmRpZmZfdCBpOwogCiAgIC8qIEZpcnN0 IGdvIHRocm91Z2ggdGhlIGxpc3QgdG8gY2hlY2sgdGhlIHR5cGVzIGFuZCBzZWUgd2hldGhl cgotICAgICB0aGV5J3JlIGFsbCBvZiB0aGUgc2FtZSBtdWx0aWJ5dGVkbmVzcy4gKi8KKyAg ICAgdGhleSdyZSBhbGwgb2YgdGhlIHNhbWUgbXVsdGlieXRlbmVzcy4gKi8KICAgZm9yIChp ID0gMDsgaSA8IG5hcmdzOyBpKyspCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgYXJnID0g YXJnc1tpXTsKQEAgLTIyMjAsNiArMjIyMCwyMSBAQCBiYXJmX29yX3F1ZXJ5X2lmX2ZpbGVf ZXhpc3RzIChMaXNwX09iamVjdCBhYnNuYW1lLCBib29sIGtub3duX3RvX2V4aXN0LAogICAg IH0KIH0KIAorLyogUmVhZCBhIGZ1bGwgYnVmZmVyIG9mIGJ5dGVzIGZyb20gRkQgaW50byBC VUYsIHdoaWNoIGlzIG9mIHNpemUgQlVGU0laRS4KKyAgIEZEIHNob3VsZCBiZSBhIHJlZ3Vs YXIgZmlsZSwgYXMgc3BlY2lhbCBmaWxlcyBtaWdodCBuZWVkIHF1aXQgcHJvY2Vzc2luZy4K KyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgcmVhZCBjb3VudCwgd2hpY2ggaXMgbGVzcyB0 aGFuIEJVRlNJWkUgYXQgRU9GLgorICAgUmV0dXJuIC0xIG9uIGZhaWx1cmUsIHNldHRpbmcg ZXJybm8gYW5kIHBvc3NpYmx5IHNldHRpbmcgQlVGLiAgKi8KK3N0YXRpYyBwdHJkaWZmX3QK K2VtYWNzX2Z1bGxfcmVhZCAoaW50IGZkLCB2b2lkICpidWYsIHB0cmRpZmZfdCBidWZzaXpl KQoreworICBjaGFyICpiID0gYnVmOworICBwdHJkaWZmX3QgbnJlYWQgPSAwLCByOworICB3 aGlsZSAoMCA8IChyID0gZW1hY3NfZmRfcmVhZCAoZmQsIGIgKyBucmVhZCwgYnVmc2l6ZSAt IG5yZWFkKSkKKwkgJiYgKG5yZWFkICs9IHIpIDwgYnVmc2l6ZSkKKyAgICBjb250aW51ZTsK KyAgcmV0dXJuIHIgPCAwID8gciA6IG5yZWFkOworfQorCiAjaWZuZGVmIFdJTkRPV1NOVAog LyogQ29weSBkYXRhIHRvIERFU1QgZnJvbSBTT1VSQ0UgaWYgcG9zc2libGUuICBSZXR1cm4g dHJ1ZSBpZiBPSy4gICovCiBzdGF0aWMgYm9vbApAQCAtMjM2OSwxNSArMjM4NCwxMyBAQCBE RUZVTiAoImNvcHktZmlsZSIsIEZjb3B5X2ZpbGUsIFNjb3B5X2ZpbGUsIDIsIDYsCiAJYmFy Zl9vcl9xdWVyeV9pZl9maWxlX2V4aXN0cyAobmV3bmFtZSwgdHJ1ZSwgImNvcHkgdG8gaXQi LAogCQkJCSAgICAgIEZJWE5VTVAgKG9rX2lmX2FscmVhZHlfZXhpc3RzKSwgZmFsc2UpOwog ICAgICAgYWxyZWFkeV9leGlzdHMgPSB0cnVlOwotICAgICAgb2ZkID0gZW1hY3Nfb3BlbiAo U1NEQVRBIChlbmNvZGVkX25ld25hbWUpLCBPX1dST05MWSwgMCk7CisgICAgICBvZmQgPSBl bWFjc19vcGVuIChTU0RBVEEgKGVuY29kZWRfbmV3bmFtZSksIE9fV1JPTkxZIHwgT19UUlVO QywgMCk7CiAgICAgfQogICBpZiAob2ZkIDwgMCkKICAgICByZXBvcnRfZmlsZV9lcnJvciAo Ik9wZW5pbmcgb3V0cHV0IGZpbGUiLCBuZXduYW1lKTsKIAogICByZWNvcmRfdW53aW5kX3By b3RlY3RfaW50IChjbG9zZV9maWxlX3Vud2luZCwgb2ZkKTsKIAotICBvZmZfdCBvbGRzaXpl ID0gMCwgbmV3c2l6ZTsKLQogICBpZiAoYWxyZWFkeV9leGlzdHMpCiAgICAgewogICAgICAg c3RydWN0IHN0YXQgb3V0X3N0OwpAQCAtMjM4NiwzNiArMjM5OSwyNiBAQCBERUZVTiAoImNv cHktZmlsZSIsIEZjb3B5X2ZpbGUsIFNjb3B5X2ZpbGUsIDIsIDYsCiAgICAgICBpZiAoc3Qu c3RfZGV2ID09IG91dF9zdC5zdF9kZXYgJiYgc3Quc3RfaW5vID09IG91dF9zdC5zdF9pbm8p CiAJcmVwb3J0X2ZpbGVfZXJybm8gKCJJbnB1dCBhbmQgb3V0cHV0IGZpbGVzIGFyZSB0aGUg c2FtZSIsCiAJCQkgICBsaXN0MiAoZmlsZSwgbmV3bmFtZSksIDApOwotICAgICAgaWYgKFNf SVNSRUcgKG91dF9zdC5zdF9tb2RlKSkKLQlvbGRzaXplID0gb3V0X3N0LnN0X3NpemU7CiAg ICAgfQogCiAgIG1heWJlX3F1aXQgKCk7CiAKLSAgaWYgKGVtYWNzX2ZkX3RvX2ludCAoaWZk KSAhPSAtMQotICAgICAgJiYgY2xvbmVfZmlsZSAob2ZkLCBlbWFjc19mZF90b19pbnQgKGlm ZCkpKQotICAgIG5ld3NpemUgPSBzdC5zdF9zaXplOwotICBlbHNlCisgIGlmIChlbWFjc19m ZF90b19pbnQgKGlmZCkgPT0gLTEKKyAgICAgIHx8ICFjbG9uZV9maWxlIChvZmQsIGVtYWNz X2ZkX3RvX2ludCAoaWZkKSkpCiAgICAgewotICAgICAgb2ZmX3QgaW5zaXplID0gc3Quc3Rf c2l6ZTsKLSAgICAgIHNzaXplX3QgY29waWVkOworICAgICAgb2ZmX3QgbmV3c2l6ZSA9IDA7 CiAKICNpZm5kZWYgTVNET1MKLSAgICAgIG5ld3NpemUgPSAwOwotCiAgICAgICBpZiAoZW1h Y3NfZmRfdG9faW50IChpZmQpICE9IC0xKQogCXsKLQkgIGZvciAoOyBuZXdzaXplIDwgaW5z aXplOyBuZXdzaXplICs9IGNvcGllZCkKKwkgIGZvciAoc3NpemVfdCBjb3BpZWQ7IDsgbmV3 c2l6ZSArPSBjb3BpZWQpCiAJICAgIHsKIAkgICAgICAvKiBDb3B5IGF0IG1vc3QgQ09QWV9N QVggYnl0ZXMgYXQgYSB0aW1lOyB0aGlzIGlzIG1pbgotCQkgKFBUUkRJRkZfTUFYLCBTSVpF X01BWCkgdHJ1bmNhdGVkIHRvIGEgdmFsdWUgdGhhdCBpcworCQkgKFNTSVpFX01BWCwgU0la RV9NQVgpIHRydW5jYXRlZCB0byBhIHZhbHVlIHRoYXQgaXMKIAkJIHN1cmVseSBhbGlnbmVk IHdlbGwuICAqLwotCSAgICAgIHNzaXplX3Qgc3NpemVfbWF4ID0gVFlQRV9NQVhJTVVNIChz c2l6ZV90KTsKLQkgICAgICBwdHJkaWZmX3QgY29weV9tYXggPSBtaW4gKHNzaXplX21heCwg U0laRV9NQVgpID4+IDMwIDw8IDMwOwotCSAgICAgIG9mZl90IGludGFpbCA9IGluc2l6ZSAt IG5ld3NpemU7Ci0JICAgICAgcHRyZGlmZl90IGxlbiA9IG1pbiAoaW50YWlsLCBjb3B5X21h eCk7CisJICAgICAgc3NpemVfdCBjb3B5X21heCA9IG1pbiAoU1NJWkVfTUFYLCBTSVpFX01B WCkgPj4gMzAgPDwgMzA7CiAJICAgICAgY29waWVkID0gY29weV9maWxlX3JhbmdlIChlbWFj c19mZF90b19pbnQgKGlmZCksIE5VTEwsCi0JCQkJCW9mZCwgTlVMTCwgbGVuLCAwKTsKKwkJ CQkJb2ZkLCBOVUxMLCBjb3B5X21heCwgMCk7CiAJICAgICAgaWYgKGNvcGllZCA8PSAwKQog CQlicmVhazsKIAkgICAgICBtYXliZV9xdWl0ICgpOwpAQCAtMjQyMywzMiArMjQyNiwyNiBA QCBERUZVTiAoImNvcHktZmlsZSIsIEZjb3B5X2ZpbGUsIFNjb3B5X2ZpbGUsIDIsIDYsCiAJ fQogI2VuZGlmIC8qIE1TRE9TICovCiAKLSAgICAgIC8qIEZhbGwgYmFjayBvbiByZWFkK3dy aXRlIGlmIGNvcHlfZmlsZV9yYW5nZSBmYWlsZWQsIG9yIGlmIHRoZQotCSBpbnB1dCBpcyBl bXB0eSBhbmQgc28gY291bGQgYmUgYSAvcHJvYyBmaWxlLCBvciBpZiBpZmQgaXMgYW4KLQkg aW52ZW50aW9uIG9mIGFuZHJvaWQuYy4gIHJlYWQrd3JpdGUgd2lsbCBlaXRoZXIgc3VjY2Vl ZCwgb3IKLQkgcmVwb3J0IGFuIGVycm9yIG1vcmUgcHJlY2lzZWx5IHRoYW4gY29weV9maWxl X3JhbmdlCi0JIHdvdWxkLiAgKi8KLSAgICAgIGlmIChuZXdzaXplICE9IGluc2l6ZSB8fCBp bnNpemUgPT0gMCkKLQl7Ci0JICBjaGFyIGJ1ZltNQVhfQUxMT0NBXTsKKyAgICAgIC8qIEZv bGxvdyB1cCB3aXRoIHJlYWQrd3JpdGUgcmVnYXJkbGVzcyBvZiBhbnkgY29weV9maWxlX3Jh bmdlIGZhaWx1cmUuCisJIE1hbnkgY29weV9maWxlX3JhbmdlIGltcGxlbWVudGF0aW9ucyBm YWlsIGZvciBubyBnb29kIHJlYXNvbiwKKwkgb3IgInN1Y2NlZWQiIGV2ZW4gd2hlbiB0aGV5 IGRpZCBub3RoaW5nIChlLmcuLCBpbiAvcHJvYyBmaWxlcykuCisJIEFsc28sIGlmIHJlYWQr d3JpdGUgZmFpbHMgaXQgd2lsbCByZXBvcnQgYW4gZXJyb3IgbW9yZQorCSBwcmVjaXNlbHkg dGhhbiBjb3B5X2ZpbGVfcmFuZ2Ugd291bGQuICAqLworICAgICAgY2hhciBidWZbTUFYX0FM TE9DQV07CiAKLQkgIGZvciAoOyAoY29waWVkID0gZW1hY3NfZmRfcmVhZCAoaWZkLCBidWYs IHNpemVvZiBidWYpKTsKLQkgICAgICAgbmV3c2l6ZSArPSBjb3BpZWQpCi0JICAgIHsKLQkg ICAgICBpZiAoY29waWVkIDwgMCkKLQkJcmVwb3J0X2ZpbGVfZXJyb3IgKCJSZWFkIGVycm9y IiwgZmlsZSk7Ci0JICAgICAgaWYgKGVtYWNzX3dyaXRlX3F1aXQgKG9mZCwgYnVmLCBjb3Bp ZWQpICE9IGNvcGllZCkKLQkJcmVwb3J0X2ZpbGVfZXJyb3IgKCJXcml0ZSBlcnJvciIsIG5l d25hbWUpOwotCSAgICB9CisgICAgICBmb3IgKHB0cmRpZmZfdCBjb3BpZWQ7CisJICAgKGNv cGllZCA9IGVtYWNzX2Z1bGxfcmVhZCAoaWZkLCBidWYsIHNpemVvZiBidWYpKTsKKwkgICBu ZXdzaXplICs9IGNvcGllZCkKKwl7CisJICBpZiAoY29waWVkIDwgMCkKKwkgICAgcmVwb3J0 X2ZpbGVfZXJyb3IgKCJSZWFkIGVycm9yIiwgZmlsZSk7CisJICBpZiAoZW1hY3Nfd3JpdGVf cXVpdCAob2ZkLCBidWYsIGNvcGllZCkgIT0gY29waWVkKQorCSAgICByZXBvcnRfZmlsZV9l cnJvciAoIldyaXRlIGVycm9yIiwgbmV3bmFtZSk7CisJICBpZiAoY29waWVkIDwgc2l6ZW9m IGJ1ZikKKwkgICAgYnJlYWs7CiAJfQogICAgIH0KIAotICAvKiBUcnVuY2F0ZSBhbnkgZXhp c3Rpbmcgb3V0cHV0IGZpbGUgYWZ0ZXIgd3JpdGluZyB0aGUgZGF0YS4gIFRoaXMKLSAgICAg aXMgbW9yZSBsaWtlbHkgdG8gd29yayB0aGFuIHRydW5jYXRpb24gYmVmb3JlIHdyaXRpbmcs IGlmIHRoZQotICAgICBmaWxlIHN5c3RlbSBpcyBvdXQgb2Ygc3BhY2Ugb3IgdGhlIHVzZXIg aXMgb3ZlciBkaXNrIHF1b3RhLiAgKi8KLSAgaWYgKG5ld3NpemUgPCBvbGRzaXplICYmIGZ0 cnVuY2F0ZSAob2ZkLCBuZXdzaXplKSAhPSAwKQotICAgIHJlcG9ydF9maWxlX2Vycm9yICgi VHJ1bmNhdGluZyBvdXRwdXQgZmlsZSIsIG5ld25hbWUpOwotCiAjaWZuZGVmIE1TRE9TCiAg IC8qIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBmaWxlIHBlcm1pc3Npb25zLCBhbmQgaWYgcmVx dWVzdGVkLCBhbHNvIGl0cwogICAgICBvd25lciBhbmQgZ3JvdXAuICAqLwpAQCAtMzgzOSw4 ICszODM2LDYgQEAgREVGVU4gKCJmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIiwgRmZpbGVfbmV3 ZXJfdGhhbl9maWxlX3AsIFNmaWxlX25ld2VyX3RoYW5fZmlsZV8KIAkgID8gUXQgOiBRbmls KTsKIH0KIAwKLWVudW0geyBSRUFEX0JVRl9TSVpFID0gTUFYX0FMTE9DQSB9OwotCiAvKiBU aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBMaXNwIGZ1bmN0aW9ucyB0byBkZWNpZGUg YSBjb2RpbmcKICAgIHN5c3RlbSBhcmUgY2FsbGVkLCBvciB3aGVuIHRoZXkgY2F1c2UgYW4g ZXJyb3IuICBCZWZvcmUgdGhleSBhcmUKICAgIGNhbGxlZCwgdGhlIGN1cnJlbnQgYnVmZmVy IGlzIHNldCB1bmlieXRlIGFuZCBpdCBjb250YWlucyBvbmx5IGEKQEAgLTM5MDksNyArMzkw NCw4IEBAIGRlY2lkZV9jb2RpbmdfdW53aW5kIChMaXNwX09iamVjdCB1bndpbmRfZGF0YSkK ICAgc3RydWN0CiAgIHsKICAgICBlbWFjc19mZCBmZDsKLSAgICBwdHJkaWZmX3QgaW5zZXJ0 ZWQsIHRyeXRyeTsKKyAgICBjaGFyICpidWY7CisgICAgcHRyZGlmZl90IGJ1ZnNpemU7CiAg IH0gczsKICAgR0NBTElHTkVEX1VOSU9OX01FTUJFUgogfTsKQEAgLTM5MTksMTIgKzM5MTUs OCBAQCBzdGF0aWNfYXNzZXJ0IChHQ0FMSUdORUQgKHVuaW9uIHJlYWRfbm9uX3JlZ3VsYXIp KTsKIHJlYWRfbm9uX3JlZ3VsYXIgKExpc3BfT2JqZWN0IHN0YXRlKQogewogICB1bmlvbiBy ZWFkX25vbl9yZWd1bGFyICpkYXRhID0gWEZJWE5VTVBUUiAoc3RhdGUpOwotICBpbnRtYXhf dCBuYnl0ZXMKLSAgICA9IGVtYWNzX2ZkX3JlYWQgKGRhdGEtPnMuZmQsCi0JCSAgICAgKChj aGFyICopIEJFR19BRERSICsgUFRfQllURSAtIEJFR19CWVRFCi0JCSAgICAgICsgZGF0YS0+ cy5pbnNlcnRlZCksCi0JCSAgICAgZGF0YS0+cy50cnl0cnkpOwotICByZXR1cm4gbWFrZV9p bnQgKG5ieXRlcyk7CisgIGludG1heF90IG5ieXRlcyA9IGVtYWNzX2ZkX3JlYWQgKGRhdGEt PnMuZmQsIGRhdGEtPnMuYnVmLCBkYXRhLT5zLmJ1ZnNpemUpOworICByZXR1cm4gbWFrZV9p bnQgKG5ieXRlcyA8IDAgPyAtZXJybm8gOiBuYnl0ZXMpOwogfQogCiAKQEAgLTQwMzQsNiAr NDAyNiwxMCBAQCBtYXliZV9tb3ZlX2dhcCAoc3RydWN0IGJ1ZmZlciAqYikKICAgICB9CiB9 CiAKKy8qIEEgZ29vZCBibG9ja3NpemUgdG8gbWluaW1pemUgc3lzdGVtIGNhbGwgb3Zlcmhl YWQgYWNyb3NzIG1vc3Qgc3lzdGVtcy4KKyAgIFRha2VuIGZyb20gY29yZXV0aWxzL3NyYy9p b2Jsa3NpemUuaCBhcyBvZiBKdWx5IDIwMjUuICAqLworZW51bSB7IElPX0JVRlNJWkUgPSAy NTYgKiAxMDI0IH07CisKIC8qIEZJWE1FOiBpbnNlcnQtZmlsZS1jb250ZW50cyBzaG91bGQg YmUgc3BsaXQgd2l0aCB0aGUgdG9wLWxldmVsIG1vdmVkIHRvCiAgICBFbGlzcCBhbmQgb25s eSB0aGUgY29yZSBrZXB0IGluIEMuICAqLwogCkBAIC00MDc4LDcgKzQwNzQsNiBAQCBERUZV TiAoImluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5z ZXJ0X2ZpbGVfY29udGVudHMsCiAgIChMaXNwX09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmpl Y3QgdmlzaXQsIExpc3BfT2JqZWN0IGJlZywgTGlzcF9PYmplY3QgZW5kLAogICAgTGlzcF9P YmplY3QgcmVwbGFjZSkKIHsKLSAgc3RydWN0IHN0YXQgc3Q7CiAgIHN0cnVjdCB0aW1lc3Bl YyBtdGltZTsKICAgZW1hY3NfZmQgZmQ7CiAgIHB0cmRpZmZfdCBpbnNlcnRlZCA9IDA7CkBA IC00MDg2LDE2ICs0MDgxLDE2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBG aW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgc3BlY3Bk bF9yZWYgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBMaXNwX09iamVjdCBoYW5kbGVy LCB2YWwsIGluc3ZhbCwgb3JpZ19maWxlbmFtZSwgb2xkX3VuZG87CiAgIExpc3BfT2JqZWN0 IHA7Ci0gIHB0cmRpZmZfdCB0b3RhbCA9IDA7Ci0gIGJvb2wgcmVndWxhciA9IHRydWU7Cisg IG9mZl90IHRvdGFsID0gMDsKKyAgYm9vbCByZWd1bGFyOwogICBpbnQgc2F2ZV9lcnJubyA9 IDA7Ci0gIGNoYXIgcmVhZF9idWZbUkVBRF9CVUZfU0laRV07CisgIGNoYXIgcmVhZF9idWZb TUFYX0FMTE9DQV07CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtIGNvZGluZzsKICAgYm9vbCBy ZXBsYWNlX2hhbmRsZWQgPSBmYWxzZTsKICAgYm9vbCBzZXRfY29kaW5nX3N5c3RlbSA9IGZh bHNlOwogICBMaXNwX09iamVjdCBjb2Rpbmdfc3lzdGVtOwotICAvKiBOZWdhdGl2ZSBpZiBy ZWFkIGVycm9yLCAwIGlmIE9LIHNvIGZhciwgcG9zaXRpdmUgaWYgcXVpdC4gICovCi0gIHB0 cmRpZmZfdCByZWFkX3F1aXQgPSAwOworICAvKiBlcnJubyBpZiByZWFkIGVycm9yLCAwIGlm IE9LIHNvIGZhciwgbmVnYXRpdmUgaWYgcXVpdC4gICovCisgIGludCByZWFkX3F1aXQgPSAw OwogICAvKiBJZiB0aGUgdW5kbyBsb2cgb25seSBjb250YWlucyB0aGUgaW5zZXJ0aW9uLCB0 aGVyZSdzIG5vIHBvaW50CiAgICAgIGtlZXBpbmcgaXQuICBJdCdzIHR5cGljYWxseSB3aGVu IHdlIGZpcnN0IGZpbGwgYSBmaWxlLWJ1ZmZlci4gICovCiAgIGJvb2wgZW1wdHlfdW5kb19s aXN0X3AKQEAgLTQxMTEsNyArNDEwNiw5IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVu dHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAg LyogU0FNRV9BVF9FTkRfQ0hBUlBPUyBjb3VudHMgY2hhcmFjdGVycywgYmVjYXVzZQogICAg ICByZXN0b3JlX3dpbmRvd19wb2ludHMgbmVlZHMgdGhlIG9sZCBjaGFyYWN0ZXIgY291bnQu ICAqLwogICBwdHJkaWZmX3Qgc2FtZV9hdF9lbmRfY2hhcnBvcyA9IFpWOwotICBib29sIHNl ZWthYmxlID0gdHJ1ZTsKKworICAvKiBBIGhpbnQgYWJvdXQgdGhlIGZpbGUgc2l6ZSwgb3Ig LTEgaWYgdGhlcmUgaXMgbm8gaGludC4gICovCisgIG9mZl90IGZpbGVfc2l6ZV9oaW50ID0g LTE7CiAKICAgaWYgKGN1cnJlbnRfYnVmZmVyLT5iYXNlX2J1ZmZlciAmJiAhIE5JTFAgKHZp c2l0KSkKICAgICBlcnJvciAoIkNhbm5vdCBkbyBmaWxlIHZpc2l0aW5nIGluIGFuIGluZGly ZWN0IGJ1ZmZlciIpOwpAQCAtNDEyMSwxMSArNDExOCwxMSBAQCBERUZVTiAoImluc2VydC1m aWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29u dGVudHMsCiAKICAgdmFsID0gUW5pbDsKICAgcCA9IFFuaWw7Ci0gIG9yaWdfZmlsZW5hbWUg PSBRbmlsOwogICBvbGRfdW5kbyA9IFFuaWw7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlbmFt ZSk7CiAgIGZpbGVuYW1lID0gRmV4cGFuZF9maWxlX25hbWUgKGZpbGVuYW1lLCBRbmlsKTsK KyAgb3JpZ19maWxlbmFtZSA9IGZpbGVuYW1lOwogCiAgIC8qIFRoZSB2YWx1ZSBRbmlsIG1l YW5zIHRoYXQgdGhlIGNvZGluZyBzeXN0ZW0gaXMgbm90IHlldAogICAgICBkZWNpZGVkLiAg Ki8KQEAgLTQxNTMsOSArNDE1MCw4IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMi LCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgICB9 CiAKICAgb2ZmX3QgYmVnX29mZnNldCA9ICFOSUxQIChiZWcpID8gZmlsZV9vZmZzZXQgKGJl ZykgOiAwOwotICBvZmZfdCBlbmRfb2Zmc2V0ID0gIU5JTFAgKGVuZCkgPyBmaWxlX29mZnNl dCAoZW5kKSA6IC0xOworICBvZmZfdCBlbmRfb2Zmc2V0ID0gIU5JTFAgKGVuZCkgPyBmaWxl X29mZnNldCAoZW5kKSA6IFRZUEVfTUFYSU1VTSAob2ZmX3QpOwogCi0gIG9yaWdfZmlsZW5h bWUgPSBmaWxlbmFtZTsKICAgZmlsZW5hbWUgPSBFTkNPREVfRklMRSAoZmlsZW5hbWUpOwog CiAgIGZkID0gZW1hY3NfZmRfb3BlbiAoU1NEQVRBIChmaWxlbmFtZSksIE9fUkRPTkxZLCAw KTsKQEAgLTQxNjUsNyArNDE2MSw2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMi LCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgICAg IGlmIChOSUxQICh2aXNpdCkpCiAJcmVwb3J0X2ZpbGVfZXJyb3IgKCJPcGVuaW5nIGlucHV0 IGZpbGUiLCBvcmlnX2ZpbGVuYW1lKTsKICAgICAgIG10aW1lID0gdGltZV9lcnJvcl92YWx1 ZSAoc2F2ZV9lcnJubyk7Ci0gICAgICBzdC5zdF9zaXplID0gLTE7CiAgICAgICBpZiAoIU5J TFAgKFZjb2Rpbmdfc3lzdGVtX2Zvcl9yZWFkKSkKIAl7CiAJICAvKiBEb24ndCBsZXQgaW52 YWxpZCB2YWx1ZXMgaW50byBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtLiAgKi8KQEAgLTQx ODcsMjEgKzQxODIsNDYgQEAgREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNl cnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLAogCQkJICAgICBYQ0FS IChYQ0FSICh3aW5kb3dfbWFya2VycykpKTsKICAgICB9CiAKLSAgaWYgKGVtYWNzX2ZkX2Zz dGF0IChmZCwgJnN0KSAhPSAwKQotICAgIHJlcG9ydF9maWxlX2Vycm9yICgiSW5wdXQgZmls ZSBzdGF0dXMiLCBvcmlnX2ZpbGVuYW1lKTsKLSAgbXRpbWUgPSBnZXRfc3RhdF9tdGltZSAo JnN0KTsKKyAgeworICAgIHN0cnVjdCBzdGF0IHN0OworICAgIGlmIChlbWFjc19mZF9mc3Rh dCAoZmQsICZzdCkgPCAwKQorICAgICAgcmVwb3J0X2ZpbGVfZXJyb3IgKCJJbnB1dCBmaWxl IHN0YXR1cyIsIG9yaWdfZmlsZW5hbWUpOworICAgIHJlZ3VsYXIgPSBTX0lTUkVHIChzdC5z dF9tb2RlKSAhPSAwOworICAgIGJvb2wgbWVtb3J5X29iamVjdCA9IFNfVFlQRUlTU0hNICgm c3QpIHx8IFNfVFlQRUlTVE1PICgmc3QpOworCisgICAgaWYgKHJlZ3VsYXIgfCBtZW1vcnlf b2JqZWN0KQorICAgICAgeworCWZpbGVfc2l6ZV9oaW50ID0gc3Quc3Rfc2l6ZTsKKworCS8q IEEgbmVnYXRpdmUgc2l6ZSBjYW4gaGFwcGVuIG9uIGEgcGxhdGZvcm0gdGhhdCBhbGxvd3Mg ZmlsZQorCSAgIHNpemVzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBvZmZfdCB2YWx1ZS4g ICovCisJaWYgKGZpbGVfc2l6ZV9oaW50IDwgMCkKKwkgIGJ1ZmZlcl9vdmVyZmxvdyAoKTsK KyAgICAgIH0KKworICAgIG10aW1lID0gKG1lbW9yeV9vYmplY3QKKwkgICAgID8gbWFrZV90 aW1lc3BlYyAoMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKQorCSAgICAgOiBnZXRfc3RhdF9t dGltZSAoJnN0KSk7CisgIH0KKworICAvKiBUaGUgaW5pdGlhbCBvZmZzZXQgY2FuIGJlIG5v bnplcm8sIGUuZy4sIC9kZXYvc3RkaW4uCisgICAgIFJlZ3VsYXIgZmlsZXMgY2FuIGJlIG5v bi1zZWVrYWJsZSwgZS5nLiwgL3Byb2MvY3B1aW5mbyB3aXRoIFNFRUtfRU5ELiAgKi8KKyAg b2ZmX3QgaW5pdGlhbF9vZmZzZXQgPSBlbWFjc19mZF9sc2VlayAoZmQsIDAsIFNFRUtfQ1VS KTsKKyAgYm9vbCBzZWVrYWJsZSA9IDAgPD0gaW5pdGlhbF9vZmZzZXQ7CisgIGlmIChzZWVr YWJsZSAmJiBOSUxQIChiZWcpKQorICAgIGJlZ19vZmZzZXQgPSBpbml0aWFsX29mZnNldDsK KyAgaWYgKGVuZF9vZmZzZXQgPD0gYmVnX29mZnNldCkKKyAgICBnb3RvIGhhbmRsZWQ7CiAK ICAgLyogVGhlIFJFUExBQ0UgY29kZSB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBpbiBvcmRl ciB0byB3b3JrIG9uCiAgICAgIG5hbWVkIHBpcGVzLCBhbmQgaXQncyBwcm9iYWJseSBqdXN0 IG5vdCB3b3J0aCBpdC4gIFNvIHdlIHNob3VsZAogICAgICBhdCBsZWFzdCBzaWduYWwgYW4g ZXJyb3IuICAqLwogCi0gIGlmICghKFNfSVNSRUcgKHN0LnN0X21vZGUpIHx8IFNfSVNESVIg KHN0LnN0X21vZGUpKSkKKyAgaWYgKCFyZWd1bGFyKQogICAgIHsKLSAgICAgIHJlZ3VsYXIg PSBmYWxzZTsKLQotICAgICAgaWYgKCFOSUxQIChyZXBsYWNlKSkKKyAgICAgIGlmICghTklM UCAodmlzaXQpIHx8ICFOSUxQIChyZXBsYWNlKSkKIAl7Ci0JICBpZiAoIUVRIChyZXBsYWNl LCBRaWZfcmVndWxhcikpCisJICBpZiAoIU5JTFAgKHZpc2l0KSB8fCAhRVEgKHJlcGxhY2Us IFFpZl9yZWd1bGFyKSkKIAkgICAgeHNpZ25hbDIgKFFmaWxlX2Vycm9yLAogCQkgICAgICBi dWlsZF9zdHJpbmcgKCJub3QgYSByZWd1bGFyIGZpbGUiKSwgb3JpZ19maWxlbmFtZSk7CiAJ ICBlbHNlCkBAIC00MjExLDM5ICs0MjMxLDE0IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29u dGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywK IAkgICAgcmVwbGFjZSA9IFF1bmJvdW5kOwogCX0KIAotICAgICAgLyogRm9yYmlkIHNwZWNp ZnlpbmcgQkVHIHRvZ2V0aGVyIHdpdGggYSBzcGVjaWFsIGZpbGUsIGFzIHBlcgorICAgICAg LyogRm9yYmlkIHNwZWNpZnlpbmcgQkVHIHVubGVzcyB0aGUgZmlsZSBpcyByZWd1bGFyLCBh cyBwZXIKIAkgdGhlIGRvYyBzdHJpbmcuICAqLwogCiAgICAgICBpZiAoIU5JTFAgKGJlZykp CiAJeHNpZ25hbDIgKFFmaWxlX2Vycm9yLAotCQkgIGJ1aWxkX3N0cmluZyAoImNhbm5vdCB1 c2UgYSBzdGFydCBwb3NpdGlvbiBpbiBhIG5vbi1zZWVrYWJsZSBmaWxlL2RldmljZSIpLAor CQkgIGJ1aWxkX3N0cmluZyAoImNhbiB1c2UgYSBzdGFydCBwb3NpdGlvbiIKKwkJCQkiIG9u bHkgaW4gYSByZWd1bGFyIGZpbGUiKSwKIAkJICBvcmlnX2ZpbGVuYW1lKTsKLQotICAgICAg LyogTm93IGFzY2VydGFpbiBpZiB0aGlzIGZpbGUgaXMgc2Vla2FibGUsIGJ5IGRldGVjdGlu ZyBpZgotCSBzZWVraW5nIGxlYWRzIHRvIC0xIGJlaW5nIHJldHVybmVkLiAgKi8KLSAgICAg IHNlZWthYmxlCi0JPSBlbWFjc19mZF9sc2VlayAoZmQsIDAsIFNFRUtfQ1VSKSAhPSAob2Zm X3QpIC0xOwotICAgIH0KLQotICBpZiAoZW5kX29mZnNldCA8IDApCi0gICAgewotICAgICAg aWYgKCFyZWd1bGFyKQotCWVuZF9vZmZzZXQgPSBUWVBFX01BWElNVU0gKG9mZl90KTsKLSAg ICAgIGVsc2UKLQl7Ci0JICBlbmRfb2Zmc2V0ID0gc3Quc3Rfc2l6ZTsKLQotCSAgLyogQSBu ZWdhdGl2ZSBzaXplIGNhbiBoYXBwZW4gb24gYSBwbGF0Zm9ybSB0aGF0IGFsbG93cyBmaWxl Ci0JICAgICBzaXplcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gb2ZmX3QgdmFsdWUuICAq LwotCSAgaWYgKGVuZF9vZmZzZXQgPCAwKQotCSAgICBidWZmZXJfb3ZlcmZsb3cgKCk7Ci0K LQkgIC8qIFRoZSBmaWxlIHNpemUgcmV0dXJuZWQgZnJvbSBmc3RhdCBtYXkgYmUgemVybywg YnV0IGRhdGEKLQkgICAgIG1heSBiZSByZWFkYWJsZSBub25ldGhlbGVzcywgZm9yIGV4YW1w bGUgd2hlbiB0aGlzIGlzIGEKLQkgICAgIGZpbGUgaW4gdGhlIC9wcm9jIGZpbGVzeXN0ZW0u ICAqLwotCSAgaWYgKGVuZF9vZmZzZXQgPT0gMCkKLQkgICAgZW5kX29mZnNldCA9IFJFQURf QlVGX1NJWkU7Ci0JfQogICAgIH0KIAogICAvKiBDaGVjayBub3cgd2hldGhlciB0aGUgYnVm ZmVyIHdpbGwgYmVjb21lIHRvbyBsYXJnZSwKQEAgLTQyNTMsNyArNDI0OCw3IEBAIERFRlVO ICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNl cnRfZmlsZV9jb250ZW50cywKICAgICB7CiAgICAgICAvKiBUaGUgbGlrZWx5IG9mZnNldCB3 aGVyZSB3ZSB3aWxsIHN0b3AgcmVhZGluZy4gIFdlIGNvdWxkIHJlYWQKIAkgbW9yZSAob3Ig bGVzcyksIGlmIHRoZSBmaWxlIGdyb3dzIChvciBzaHJpbmtzKSBhcyB3ZSByZWFkIGl0LiAg Ki8KLSAgICAgIG9mZl90IGxpa2VseV9lbmQgPSBtaW4gKGVuZF9vZmZzZXQsIHN0LnN0X3Np emUpOworICAgICAgb2ZmX3QgbGlrZWx5X2VuZCA9IG1pbiAoZW5kX29mZnNldCwgZmlsZV9z aXplX2hpbnQpOwogCiAgICAgICBpZiAoYmVnX29mZnNldCA8IGxpa2VseV9lbmQpCiAJewpA QCAtNDI4NiwyOSArNDI4MSw1MyBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRzIiwg Rmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAgICAgICBl bHNlCiAJewogCSAgLyogRG9uJ3QgdHJ5IGxvb2tpbmcgaW5zaWRlIGEgZmlsZSBmb3IgYSBj b2Rpbmcgc3lzdGVtCi0JICAgICBzcGVjaWZpY2F0aW9uIGlmIGl0IGlzIG5vdCBhIHJlZ3Vs YXIgZmlsZS4gICovCi0JICBpZiAocmVndWxhciAmJiAhTklMUCAoVnNldF9hdXRvX2NvZGlu Z19mdW5jdGlvbikpCisJICAgICBzcGVjaWZpY2F0aW9uIGlmIGl0IGlzIG5vdCBhIHJlZ3Vs YXIsIHNlZWthYmxlIGZpbGUuICAqLworCSAgYm9vbCBsb29rX2luc2lkZSA9IChyZWd1bGFy ICYmIHNlZWthYmxlCisJCQkgICAgICAmJiAhTklMUCAoVnNldF9hdXRvX2NvZGluZ19mdW5j dGlvbikpOworCSAgaWYgKGxvb2tfaW5zaWRlICYmIDAgPCBpbml0aWFsX29mZnNldAorCSAg ICAgICYmIGVtYWNzX2ZkX2xzZWVrIChmZCwgMCwgU0VFS19TRVQpIDwgMCkKKwkgICAgbG9v a19pbnNpZGUgPSBzZWVrYWJsZSA9IGZhbHNlOworCSAgaWYgKGxvb2tfaW5zaWRlKQogCSAg ICB7CiAJICAgICAgLyogRmluZCBhIGNvZGluZyBzeXN0ZW0gc3BlY2lmaWVkIGluIHRoZSBo ZWFkaW5nIHR3bwogCQkgbGluZXMgb3IgaW4gdGhlIHRhaWxpbmcgc2V2ZXJhbCBsaW5lcyBv ZiB0aGUgZmlsZS4KLQkJIFdlIGFzc3VtZSB0aGF0IHRoZSAxSy1ieXRlIGFuZCAzSy1ieXRl IGZvciBoZWFkaW5nCisJCSBBc3N1bWUgdGhhdCB0aGUgMSBLaUIgYW5kIDMgS2lCIGZvciBo ZWFkaW5nCiAJCSBhbmQgdGFpbGluZyByZXNwZWN0aXZlbHkgYXJlIHN1ZmZpY2llbnQgZm9y IHRoaXMKLQkJIHB1cnBvc2UuICAqLwotCSAgICAgIGludCBucmVhZDsKLQotCSAgICAgIGlm IChzdC5zdF9zaXplIDw9ICgxMDI0ICogNCkpCi0JCW5yZWFkID0gZW1hY3NfZmRfcmVhZCAo ZmQsIHJlYWRfYnVmLCAxMDI0ICogNCk7CisJCSBwdXJwb3NlLiAgQmVjYXVzZSB0aGUgZmls ZSBtYXkgYmUgaW4gL3Byb2MsCisJCSBkbyBub3QgdXNlIHN0X3NpemUgb3IgcmVwb3J0IGFu eSBTRUVLX0VORCBmYWlsdXJlLiAgKi8KKwkgICAgICBzdGF0aWNfYXNzZXJ0ICg0ICogMTAy NCA8IHNpemVvZiByZWFkX2J1Zik7CisJICAgICAgcHRyZGlmZl90IG5yZWFkID0gZW1hY3Nf ZnVsbF9yZWFkIChmZCwgcmVhZF9idWYsIDQgKiAxMDI0KTsKKwkgICAgICBpZiAobnJlYWQg PCA0ICogMTAyNCkKKwkJZmlsZV9zaXplX2hpbnQgPSBucmVhZDsKIAkgICAgICBlbHNlCiAJ CXsKLQkJICBucmVhZCA9IGVtYWNzX2ZkX3JlYWQgKGZkLCByZWFkX2J1ZiwgMTAyNCk7Ci0J CSAgaWYgKG5yZWFkID09IDEwMjQpCisJCSAgb2ZmX3QgdGFpbG9mZiA9IGVtYWNzX2ZkX2xz ZWVrIChmZCwgLSAzICogMTAyNCwgU0VFS19FTkQpOworCQkgIGlmICh0YWlsb2ZmIDwgMCkK KwkJICAgIHsKKwkJICAgICAgc2Vla2FibGUgPSBmYWxzZTsKKwkJICAgICAgdGFpbG9mZiA9 IG5yZWFkOworCQkgICAgfQorCisJCSAgLyogV2hlbiBhcHBlbmRpbmcgdGhlIGxhc3QgMyBL aUIsIHJlYWQgZXh0cmEgYnl0ZXMKKwkJICAgICB3aXRob3V0IHRydXN0aW5nIHRhaWxvZmYs IGFzIHRoZSBmaWxlIG1heSBiZSBncm93aW5nLiAgKi8KKwkJICBucmVhZCA9IGVtYWNzX2Z1 bGxfcmVhZCAoZmQsIHJlYWRfYnVmICsgMTAyNCwKKwkJCQkJICAgc2l6ZW9mIHJlYWRfYnVm IC0gMTAyNCk7CisJCSAgaWYgKG5yZWFkID09IHNpemVvZiByZWFkX2J1ZiAtIDEwMjQpCisJ CSAgICB7CisJCSAgICAgIC8qIEdpdmUgdXAgcmVhZGluZyB0aGUgbGFzdCAzIEtpQjsgdGhl IGZpbGUgaXMKKwkJCSBncm93aW5nIHRvbyByYXBpZGx5LiAgKi8KKwkJICAgICAgbnJlYWQg PSAxMDI0OworCQkgICAgfQorCQkgIGVsc2UgaWYgKDAgPD0gbnJlYWQpCiAJCSAgICB7Ci0J CSAgICAgIGludCBudGFpbDsKLQkJICAgICAgaWYgKGVtYWNzX2ZkX2xzZWVrIChmZCwgc3Qu c3Rfc2l6ZSAtIDEwMjQgKiAzLCBTRUVLX0NVUikgPCAwKQotCQkJcmVwb3J0X2ZpbGVfZXJy b3IgKCJTZXR0aW5nIGZpbGUgcG9zaXRpb24iLAotCQkJCQkgICBvcmlnX2ZpbGVuYW1lKTsK LQkJICAgICAgbnRhaWwgPSBlbWFjc19mZF9yZWFkIChmZCwgcmVhZF9idWYgKyBucmVhZCwg MTAyNCAqIDMpOwotCQkgICAgICBucmVhZCA9IG50YWlsIDwgMCA/IG50YWlsIDogbnJlYWQg KyBudGFpbDsKKwkJICAgICAgZmlsZV9zaXplX2hpbnQgPSB0YWlsb2ZmICsgbnJlYWQ7CisJ CSAgICAgIG5yZWFkICs9IDEwMjQ7CisJCSAgICAgIGlmICg0ICogMTAyNCA8IG5yZWFkKQor CQkJeworCQkJICBtZW1tb3ZlIChyZWFkX2J1ZiArIDEwMjQsCisJCQkJICAgcmVhZF9idWYg KyBucmVhZCAtIDMgKiAxMDI0LCAzICogMTAyNCk7CisJCQkgIG5yZWFkID0gNCAqIDEwMjQ7 CisJCQl9CiAJCSAgICB9CiAJCX0KIApAQCAtNDM0OCw3ICs0MzY3LDcgQEAgREVGVU4gKCJp bnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9m aWxlX2NvbnRlbnRzLAogCQkgIHNwZWNwZGxfcHRyLS07CiAKIAkJICAvKiBSZXdpbmQgdGhl IGZpbGUgZm9yIHRoZSBhY3R1YWwgcmVhZCBkb25lIGxhdGVyLiAgKi8KLQkJICBpZiAoZW1h Y3NfZmRfbHNlZWsgKGZkLCAwLCBTRUVLX1NFVCkgPCAwKQorCQkgIGlmIChlbWFjc19mZF9s c2VlayAoZmQsIGluaXRpYWxfb2Zmc2V0LCBTRUVLX1NFVCkgPCAwKQogCQkgICAgcmVwb3J0 X2ZpbGVfZXJyb3IgKCJTZXR0aW5nIGZpbGUgcG9zaXRpb24iLCBvcmlnX2ZpbGVuYW1lKTsK IAkJfQogCSAgICB9CkBAIC00NDAwLDEzICs0NDE5LDEyIEBAIERFRlVOICgiaW5zZXJ0LWZp bGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250 ZW50cywKICAgICAgICYmIChOSUxQIChjb2Rpbmdfc3lzdGVtKQogCSAgfHwgISBDT0RJTkdf UkVRVUlSRV9ERUNPRElORyAoJmNvZGluZykpKQogICAgIHsKLSAgICAgIHB0cmRpZmZfdCBv dmVybGFwOwogICAgICAgLyogVGhlcmUgaXMgc3RpbGwgYSBwb3NzaWJpbGl0eSB3ZSB3aWxs IGZpbmQgdGhlIG5lZWQgdG8gZG8gY29kZQogCSBjb252ZXJzaW9uLiAgSWYgdGhhdCBoYXBw ZW5zLCBzZXQgdGhpcyB2YXJpYWJsZSB0bwogCSBnaXZlIHVwIG9uIGhhbmRsaW5nIFJFUExB Q0UgaW4gdGhlIG9wdGltaXplZCB3YXkuICAqLwogICAgICAgYm9vbCBnaXZldXBfbWF0Y2hf ZW5kID0gZmFsc2U7CiAKLSAgICAgIGlmIChiZWdfb2Zmc2V0ICE9IDApCisgICAgICBpZiAo YmVnX29mZnNldCAhPSBpbml0aWFsX29mZnNldCkKIAl7CiAJICBpZiAoZW1hY3NfZmRfbHNl ZWsgKGZkLCBiZWdfb2Zmc2V0LCBTRUVLX1NFVCkgPCAwKQogCSAgICByZXBvcnRfZmlsZV9l cnJvciAoIlNldHRpbmcgZmlsZSBwb3NpdGlvbiIsIG9yaWdfZmlsZW5hbWUpOwpAQCAtNDQx Niw4MiArNDQzNCwxMTcgQEAgREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNl cnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLAogCSBtYXRjaCB0aGUg dGV4dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIuICAqLwogICAgICAgd2hpbGUg KHRydWUpCiAJewotCSAgaW50IG5yZWFkID0gZW1hY3NfZmRfcmVhZCAoZmQsIHJlYWRfYnVm LCBzaXplb2YgcmVhZF9idWYpOworCSAgb2ZmX3QgYnl0ZXNfdG9fcmVhZCA9IHNpemVvZiBy ZWFkX2J1ZjsKKwkgIG9mZl90IGN1cnBvcyA9IGJlZ19vZmZzZXQgKyAoc2FtZV9hdF9zdGFy dCAtIEJFR1ZfQllURSk7CisJICBieXRlc190b19yZWFkID0gbWluIChieXRlc190b19yZWFk LCBlbmRfb2Zmc2V0IC0gY3VycG9zKTsKKwkgIHB0cmRpZmZfdCBucmVhZCA9IChieXRlc190 b19yZWFkIDw9IDAKKwkJCSAgICAgPyAwCisJCQkgICAgIDogZW1hY3NfZnVsbF9yZWFkIChm ZCwgcmVhZF9idWYsIGJ5dGVzX3RvX3JlYWQpKTsKIAkgIGlmIChucmVhZCA8IDApCiAJICAg IHJlcG9ydF9maWxlX2Vycm9yICgiUmVhZCBlcnJvciIsIG9yaWdfZmlsZW5hbWUpOwotCSAg ZWxzZSBpZiAobnJlYWQgPT0gMCkKLQkgICAgYnJlYWs7CiAKLQkgIGlmIChDT0RJTkdfUkVR VUlSRV9ERVRFQ1RJT04gKCZjb2RpbmcpKQorCSAgaWYgKDAgPCBucmVhZCkKIAkgICAgewot CSAgICAgIGNvZGluZ19zeXN0ZW0gPSBkZXRlY3RfY29kaW5nX3N5c3RlbSAoKHVuc2lnbmVk IGNoYXIgKikgcmVhZF9idWYsCi0JCQkJCQkgICAgbnJlYWQsIG5yZWFkLCAxLCAwLAotCQkJ CQkJICAgIGNvZGluZ19zeXN0ZW0pOwotCSAgICAgIHNldHVwX2NvZGluZ19zeXN0ZW0gKGNv ZGluZ19zeXN0ZW0sICZjb2RpbmcpOworCSAgICAgIGlmIChDT0RJTkdfUkVRVUlSRV9ERVRF Q1RJT04gKCZjb2RpbmcpKQorCQl7CisJCSAgY29kaW5nX3N5c3RlbQorCQkgICAgPSBkZXRl Y3RfY29kaW5nX3N5c3RlbSAoKHVuc2lnbmVkIGNoYXIgKikgcmVhZF9idWYsCisJCQkJCSAg ICBucmVhZCwgbnJlYWQsIDEsIDAsCisJCQkJCSAgICBjb2Rpbmdfc3lzdGVtKTsKKwkJICBz ZXR1cF9jb2Rpbmdfc3lzdGVtIChjb2Rpbmdfc3lzdGVtLCAmY29kaW5nKTsKKwkJfQorCisJ ICAgICAgaWYgKENPRElOR19SRVFVSVJFX0RFQ09ESU5HICgmY29kaW5nKSkKKwkJLyogV2Ug Zm91bmQgdGhhdCB0aGUgZmlsZSBzaG91bGQgYmUgZGVjb2RlZCBzb21laG93LgorCQkgICBM ZXQncyBnaXZlIHVwIGhlcmUuICAqLworCQl7CisJCSAgZ2l2ZXVwX21hdGNoX2VuZCA9IHRy dWU7CisJCSAgYnJlYWs7CisJCX0KKworCSAgICAgIHB0cmRpZmZfdCBidWZwb3MgPSAwOwor CSAgICAgIHdoaWxlIChidWZwb3MgPCBucmVhZCAmJiBzYW1lX2F0X3N0YXJ0IDwgc2FtZV9h dF9lbmQKKwkJICAgICAmJiBGRVRDSF9CWVRFIChzYW1lX2F0X3N0YXJ0KSA9PSByZWFkX2J1 ZltidWZwb3NdKQorCQlzYW1lX2F0X3N0YXJ0KyssIGJ1ZnBvcysrOworCSAgICAgIC8qIElm IHdlIGZvdW5kIGEgZGlzY3JlcGFuY3ksIHN0b3AgdGhlIHNjYW4uICAqLworCSAgICAgIGlm IChidWZwb3MgIT0gbnJlYWQpCisJCWJyZWFrOwogCSAgICB9CiAKLQkgIGlmIChDT0RJTkdf UkVRVUlSRV9ERUNPRElORyAoJmNvZGluZykpCi0JICAgIC8qIFdlIGZvdW5kIHRoYXQgdGhl IGZpbGUgc2hvdWxkIGJlIGRlY29kZWQgc29tZWhvdy4KLSAgICAgICAgICAgICAgIExldCdz IGdpdmUgdXAgaGVyZS4gICovCisJICBpZiAobnJlYWQgPCBieXRlc190b19yZWFkKQogCSAg ICB7Ci0JICAgICAgZ2l2ZXVwX21hdGNoX2VuZCA9IHRydWU7Ci0JICAgICAgYnJlYWs7Ci0J ICAgIH0KKwkgICAgICBmaWxlX3NpemVfaGludCA9IGN1cnBvcyArIG5yZWFkOwogCi0JICBp bnQgYnVmcG9zID0gMDsKLQkgIHdoaWxlIChidWZwb3MgPCBucmVhZCAmJiBzYW1lX2F0X3N0 YXJ0IDwgWlZfQllURQotCQkgJiYgRkVUQ0hfQllURSAoc2FtZV9hdF9zdGFydCkgPT0gcmVh ZF9idWZbYnVmcG9zXSkKLQkgICAgc2FtZV9hdF9zdGFydCsrLCBidWZwb3MrKzsKLQkgIC8q IElmIHdlIGZvdW5kIGEgZGlzY3JlcGFuY3ksIHN0b3AgdGhlIHNjYW4uCi0JICAgICBPdGhl cndpc2UgbG9vcCBhcm91bmQgYW5kIHNjYW4gdGhlIG5leHQgYnVmZmVyZnVsLiAgKi8KLQkg IGlmIChidWZwb3MgIT0gbnJlYWQpCi0JICAgIGJyZWFrOwotCX0KLSAgICAgIC8qIElmIHRo ZSBmaWxlIG1hdGNoZXMgdGhlIGJ1ZmZlciBjb21wbGV0ZWx5LAotCSB0aGVyZSdzIG5vIG5l ZWQgdG8gcmVwbGFjZSBhbnl0aGluZy4gICovCi0gICAgICBpZiAoc2FtZV9hdF9zdGFydCAt IEJFR1ZfQllURSA9PSBlbmRfb2Zmc2V0IC0gYmVnX29mZnNldCkKLQl7Ci0JICBlbWFjc19m ZF9jbG9zZSAoZmQpOwotCSAgY2xlYXJfdW53aW5kX3Byb3RlY3QgKGZkX2luZGV4KTsKKwkg ICAgICAvKiBEYXRhIGluc2VydGVkIGZyb20gdGhlIGZpbGUgbWF0Y2ggdGhlIGJ1ZmZlcidz IGxlYWRpbmcgYnl0ZXMsCisJCSBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gcmVwbGFjZSBhbnl0 aGluZy4gICovCisJICAgICAgZW1hY3NfZmRfY2xvc2UgKGZkKTsKKwkgICAgICBjbGVhcl91 bndpbmRfcHJvdGVjdCAoZmRfaW5kZXgpOwogCi0JICAvKiBUcnVuY2F0ZSB0aGUgYnVmZmVy IHRvIHRoZSBzaXplIG9mIHRoZSBmaWxlLiAgKi8KLQkgIGRlbF9yYW5nZV8xIChzYW1lX2F0 X3N0YXJ0LCBzYW1lX2F0X2VuZCwgMCwgMCk7Ci0JICBnb3RvIGhhbmRsZWQ7CisJICAgICAg LyogVHJ1bmNhdGUgdGhlIGJ1ZmZlciB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4gICovCisJ ICAgICAgZGVsX3JhbmdlX2J5dGUgKHNhbWVfYXRfc3RhcnQsIHNhbWVfYXRfZW5kKTsKKwkg ICAgICBnb3RvIGhhbmRsZWQ7CisJICAgIH0KIAl9CiAKICAgICAgIC8qIENvdW50IGhvdyBt YW55IGNoYXJzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIAkgbWF0Y2ggdGhlIHRleHQgYXQg dGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAgQnV0LCBpZiB3ZSBoYXZlCiAJIGFscmVhZHkgZm91 bmQgdGhhdCBkZWNvZGluZyBpcyBuZWNlc3NhcnksIGRvbid0IHdhc3RlIHRpbWUuICAqLwor CisgICAgICBvZmZfdCBlbmRwb3M7CisgICAgICBpZiAoIWdpdmV1cF9tYXRjaF9lbmQpCisJ eworCSAgZW5kcG9zID0gZW5kX29mZnNldDsKKwkgIGlmIChlbmRwb3MgPT0gVFlQRV9NQVhJ TVVNIChvZmZfdCkpCisJICAgIHsKKwkgICAgICBlbmRwb3MgPSBlbWFjc19mZF9sc2VlayAo ZmQsIDAsIFNFRUtfRU5EKTsKKwkgICAgICBnaXZldXBfbWF0Y2hfZW5kID0gZW5kcG9zIDwg MDsKKwkgICAgICBpZiAoZ2l2ZXVwX21hdGNoX2VuZCkKKwkJc2Vla2FibGUgPSBmYWxzZTsK KwkgICAgICBlbHNlCisJCXsKKwkJICAvKiBDaGVjayB0aGF0IHJlYWQgcmVwb3J0cyBFT0Yg c29vbiwgdG8gY2F0Y2ggcGxhdGZvcm1zCisJCSAgICAgd2hlcmUgU0VFS19FTkQgY2FuIHJl cG9ydCB3aWxkbHkgc21hbGwgb2Zmc2V0cy4gICovCisJCSAgcHRyZGlmZl90IG4gPSBlbWFj c19mdWxsX3JlYWQgKGZkLCByZWFkX2J1Ziwgc2l6ZW9mIHJlYWRfYnVmKTsKKwkJICBpZiAo biA8IDApCisJCSAgICByZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBvcmlnX2Zp bGVuYW1lKTsKKwkJICBlbmRwb3MgKz0gbjsKKwkJICBnaXZldXBfbWF0Y2hfZW5kID0gbiA9 PSBzaXplb2YgcmVhZF9idWY7CisJCSAgaWYgKCFnaXZldXBfbWF0Y2hfZW5kKQorCQkgICAg ZmlsZV9zaXplX2hpbnQgPSBlbmRwb3M7CisJCX0KKwkgICAgfQorCX0KKwogICAgICAgd2hp bGUgKCFnaXZldXBfbWF0Y2hfZW5kKQogCXsKLQkgIGludCB0b3RhbF9yZWFkLCBucmVhZCwg YnVmcG9zLCB0cmlhbDsKKwkgIHB0cmRpZmZfdCBucmVhZCwgYnVmcG9zLCB0cmlhbDsKIAkg IG9mZl90IGN1cnBvczsKIAogCSAgLyogQXQgd2hhdCBmaWxlIHBvc2l0aW9uIGFyZSB3ZSBu b3cgc2Nhbm5pbmc/ICAqLwotCSAgY3VycG9zID0gZW5kX29mZnNldCAtIChaVl9CWVRFIC0g c2FtZV9hdF9lbmQpOworCSAgY3VycG9zID0gZW5kcG9zIC0gKFpWX0JZVEUgLSBzYW1lX2F0 X2VuZCk7CiAJICAvKiBJZiB0aGUgZW50aXJlIGZpbGUgbWF0Y2hlcyB0aGUgYnVmZmVyIHRh aWwsIHN0b3AgdGhlIHNjYW4uICAqLwogCSAgaWYgKGN1cnBvcyA9PSAwKQogCSAgICBicmVh azsKIAkgIC8qIEhvdyBtdWNoIGNhbiB3ZSBzY2FuIGluIHRoZSBuZXh0IHN0ZXA/ICAqLwog CSAgdHJpYWwgPSBtaW4gKGN1cnBvcywgc2l6ZW9mIHJlYWRfYnVmKTsKLQkgIGlmIChlbWFj c19mZF9sc2VlayAoZmQsIGN1cnBvcyAtIHRyaWFsLCBTRUVLX1NFVCkgPCAwKQorCSAgY3Vy cG9zID0gZW1hY3NfZmRfbHNlZWsgKGZkLCBjdXJwb3MgLSB0cmlhbCwgU0VFS19TRVQpOwor CSAgaWYgKGN1cnBvcyA8IDApCiAJICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBm aWxlIHBvc2l0aW9uIiwgb3JpZ19maWxlbmFtZSk7CiAKLQkgIHRvdGFsX3JlYWQgPSBucmVh ZCA9IDA7Ci0JICB3aGlsZSAodG90YWxfcmVhZCA8IHRyaWFsKQorCSAgbnJlYWQgPSBlbWFj c19mdWxsX3JlYWQgKGZkLCByZWFkX2J1ZiwgdHJpYWwpOworCSAgaWYgKG5yZWFkIDwgdHJp YWwpCiAJICAgIHsKLQkgICAgICBucmVhZCA9IGVtYWNzX2ZkX3JlYWQgKGZkLCByZWFkX2J1 ZiArIHRvdGFsX3JlYWQsCi0JCQkJICAgICB0cmlhbCAtIHRvdGFsX3JlYWQpOwogCSAgICAg IGlmIChucmVhZCA8IDApCiAJCXJlcG9ydF9maWxlX2Vycm9yICgiUmVhZCBlcnJvciIsIG9y aWdfZmlsZW5hbWUpOwotCSAgICAgIGVsc2UgaWYgKG5yZWFkID09IDApCi0JCWJyZWFrOwot CSAgICAgIHRvdGFsX3JlYWQgKz0gbnJlYWQ7CisJICAgICAgLyogVGhlIGZpbGUgdW5leHBl Y3RlZGx5IHNocmFuay4gICovCisJICAgICAgZmlsZV9zaXplX2hpbnQgPSBjdXJwb3MgKyBu cmVhZDsKKwkgICAgICBnaXZldXBfbWF0Y2hfZW5kID0gdHJ1ZTsKKwkgICAgICBicmVhazsK IAkgICAgfQogCiAJICAvKiBTY2FuIHRoaXMgYnVmZmVyZnVsIGZyb20gdGhlIGVuZCwgY29t cGFyaW5nIHdpdGgKIAkgICAgIHRoZSBFbWFjcyBidWZmZXIuICAqLwotCSAgYnVmcG9zID0g dG90YWxfcmVhZDsKKwkgIGJ1ZnBvcyA9IG5yZWFkOwogCiAJICAvKiBDb21wYXJlIHdpdGgg c2FtZV9hdF9zdGFydCB0byBhdm9pZCBjb3VudGluZyBzb21lIGJ1ZmZlciB0ZXh0CiAJICAg ICBhcyBtYXRjaGluZyBib3RoIGF0IHRoZSBmaWxlJ3MgYmVnaW5uaW5nIGFuZCBhdCB0aGUg ZW5kLiAgKi8KQEAgLTQ1MTIsOSArNDU2NSw2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29u dGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywK IAkJZ2l2ZXVwX21hdGNoX2VuZCA9IHRydWU7CiAJICAgICAgYnJlYWs7CiAJICAgIH0KLQot CSAgaWYgKG5yZWFkID09IDApCi0JICAgIGJyZWFrOwogCX0KIAogICAgICAgaWYgKCEgZ2l2 ZXVwX21hdGNoX2VuZCkKQEAgLTQ1MzgsMTcgKzQ1ODgsMTEgQEAgREVGVU4gKCJpbnNlcnQt ZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2Nv bnRlbnRzLAogCQkgICAmJiAhIENIQVJfSEVBRF9QIChGRVRDSF9CWVRFIChzYW1lX2F0X2Vu ZCkpKQogCSAgICAgIHNhbWVfYXRfZW5kKys7CiAKLQkgIC8qIERvbid0IHRyeSB0byByZXVz ZSB0aGUgc2FtZSBwaWVjZSBvZiB0ZXh0IHR3aWNlLiAgKi8KLQkgIG92ZXJsYXAgPSAoc2Ft ZV9hdF9zdGFydCAtIEJFR1ZfQllURQotCQkgICAgIC0gKHNhbWVfYXRfZW5kCi0JCQkrICgh IE5JTFAgKGVuZCkgPyBlbmRfb2Zmc2V0IDogc3Quc3Rfc2l6ZSkgLSBaVl9CWVRFKSk7Ci0J ICBpZiAob3ZlcmxhcCA+IDApCi0JICAgIHNhbWVfYXRfZW5kICs9IG92ZXJsYXA7CiAJICBz YW1lX2F0X2VuZF9jaGFycG9zID0gQllURV9UT19DSEFSIChzYW1lX2F0X2VuZCk7CiAKIAkg IC8qIEFycmFuZ2UgdG8gcmVhZCBvbmx5IHRoZSBub25tYXRjaGluZyBtaWRkbGUgcGFydCBv ZiB0aGUgZmlsZS4gICovCiAJICBiZWdfb2Zmc2V0ICs9IHNhbWVfYXRfc3RhcnQgLSBCRUdW X0JZVEU7Ci0JICBlbmRfb2Zmc2V0IC09IFpWX0JZVEUgLSBzYW1lX2F0X2VuZDsKKwkgIGVu ZF9vZmZzZXQgPSBlbmRwb3MgLSAoWlZfQllURSAtIHNhbWVfYXRfZW5kKTsKIAogICAgICAg ICAgIGlmICghTklMUCAodmlzaXQpICYmIEJFRyA9PSBCRUdWICYmIFogPT0gWlYpCiAgICAg ICAgICAgICAvKiBUaGlzIGJpbmRpbmcgaXMgdG8gYXZvaWQgYXNrLXVzZXItYWJvdXQtc3Vw ZXJzZXNzaW9uLXRocmVhdApAQCAtNDU5Myw3ICs0NjM3LDYgQEAgREVGVU4gKCJpbnNlcnQt ZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2Nv bnRlbnRzLAogICAgIHsKICAgICAgIHB0cmRpZmZfdCBzYW1lX2F0X3N0YXJ0X2NoYXJwb3M7 CiAgICAgICBwdHJkaWZmX3QgaW5zZXJ0ZWRfY2hhcnM7Ci0gICAgICBwdHJkaWZmX3Qgb3Zl cmxhcDsKICAgICAgIHB0cmRpZmZfdCBidWZwb3M7CiAgICAgICB1bnNpZ25lZCBjaGFyICpk ZWNvZGVkOwogICAgICAgcHRyZGlmZl90IHRlbXA7CkBAIC00NjEzLDE3ICs0NjU2LDIxIEBA IERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMs IFNpbnNlcnRfZmlsZV9jb250ZW50cywKIAogICAgICAgaW5zZXJ0ZWQgPSAwOwkJLyogQnl0 ZXMgcHV0IGludG8gQ09OVkVSU0lPTl9CVUZGRVIgc28gZmFyLiAgKi8KICAgICAgIHVucHJv Y2Vzc2VkID0gMDsJCS8qIEJ5dGVzIG5vdCBwcm9jZXNzZWQgaW4gcHJldmlvdXMgbG9vcC4g ICovCisgICAgICBmaWxlX3NpemVfaGludCA9IGJlZ19vZmZzZXQ7CiAKICAgICAgIHdoaWxl ICh0cnVlKQogCXsKLQkgIC8qIFJlYWQgYXQgbW9zdCBSRUFEX0JVRl9TSVpFIGJ5dGVzIGF0 IGEgdGltZSwgdG8gYWxsb3cKKwkgIC8qIFJlYWQgb25lIGJ1ZmZlciBhIHRpbWUsIHRvIGFs bG93CiAJICAgICBxdWl0dGluZyB3aGlsZSByZWFkaW5nIGEgaHVnZSBmaWxlLiAgKi8KIAot CSAgdGhpcyA9IGVtYWNzX2ZkX3JlYWQgKGZkLCByZWFkX2J1ZiArIHVucHJvY2Vzc2VkLAot CQkJCVJFQURfQlVGX1NJWkUgLSB1bnByb2Nlc3NlZCk7Ci0JICBpZiAodGhpcyA8PSAwKQor CSAgcHRyZGlmZl90IHRyaWFsID0gc2l6ZW9mIHJlYWRfYnVmIC0gdW5wcm9jZXNzZWQ7CisJ ICB0aGlzID0gZW1hY3NfZnVsbF9yZWFkIChmZCwgcmVhZF9idWYgKyB1bnByb2Nlc3NlZCwg dHJpYWwpOworCSAgaWYgKHRoaXMgPCAwKQorCSAgICByZXBvcnRfZmlsZV9lcnJvciAoIlJl YWQgZXJyb3IiLCBvcmlnX2ZpbGVuYW1lKTsKKwkgIGlmICh0aGlzID09IDApCiAJICAgIGJy ZWFrOwogCisJICBmaWxlX3NpemVfaGludCArPSB0aGlzOwogCSAgQlVGX1RFTVBfU0VUX1BU IChYQlVGRkVSIChjb252ZXJzaW9uX2J1ZmZlciksCiAJCQkgICBCVUZfWiAoWEJVRkZFUiAo Y29udmVyc2lvbl9idWZmZXIpKSk7CiAJICBkZWNvZGVfY29kaW5nX2Nfc3RyaW5nICgmY29k aW5nLCAodW5zaWduZWQgY2hhciAqKSByZWFkX2J1ZiwKQEAgLTQ2MzEsMTAgKzQ2NzgsMTAg QEAgREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50 cywgU2luc2VydF9maWxlX2NvbnRlbnRzLAogCSAgdW5wcm9jZXNzZWQgPSBjb2RpbmcuY2Fy cnlvdmVyX2J5dGVzOwogCSAgaWYgKGNvZGluZy5jYXJyeW92ZXJfYnl0ZXMgPiAwKQogCSAg ICBtZW1jcHkgKHJlYWRfYnVmLCBjb2RpbmcuY2FycnlvdmVyLCB1bnByb2Nlc3NlZCk7CisJ ICBpZiAodGhpcyA8IHRyaWFsKQorCSAgICBicmVhazsKIAl9CiAKLSAgICAgIGlmICh0aGlz IDwgMCkKLQlyZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBvcmlnX2ZpbGVuYW1l KTsKICAgICAgIGVtYWNzX2ZkX2Nsb3NlIChmZCk7CiAgICAgICBjbGVhcl91bndpbmRfcHJv dGVjdCAoZmRfaW5kZXgpOwogCkBAIC00NzA2LDEwICs0NzUzLDYgQEAgREVGVU4gKCJpbnNl cnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxl X2NvbnRlbnRzLAogCSAgICAgICAmJiAhIENIQVJfSEVBRF9QIChGRVRDSF9CWVRFIChzYW1l X2F0X2VuZCkpKQogCSAgc2FtZV9hdF9lbmQrKzsKIAotICAgICAgLyogRG9uJ3QgdHJ5IHRv IHJldXNlIHRoZSBzYW1lIHBpZWNlIG9mIHRleHQgdHdpY2UuICAqLwotICAgICAgb3Zlcmxh cCA9IHNhbWVfYXRfc3RhcnQgLSBCRUdWX0JZVEUgLSAoc2FtZV9hdF9lbmQgKyBpbnNlcnRl ZCAtIFpWX0JZVEUpOwotICAgICAgaWYgKG92ZXJsYXAgPiAwKQotCXNhbWVfYXRfZW5kICs9 IG92ZXJsYXA7CiAgICAgICBzYW1lX2F0X2VuZF9jaGFycG9zID0gQllURV9UT19DSEFSIChz YW1lX2F0X2VuZCk7CiAKICAgICAgIC8qIElmIGRpc3BsYXkgY3VycmVudGx5IHN0YXJ0cyBh dCBiZWdpbm5pbmcgb2YgbGluZSwKQEAgLTQ3NjAsMTcgKzQ4MDMsNyBAQCBERUZVTiAoImlu c2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2Zp bGVfY29udGVudHMsCiAgICAgICBnb3RvIGhhbmRsZWQ7CiAgICAgfQogCi0gIC8qIERvbid0 IGJlbGlldmUgc3Quc3Rfc2l6ZSBpZiBpdCBpcyB6ZXJvLiAgKi8KLSAgaWYgKChyZWd1bGFy ICYmIHN0LnN0X3NpemUgPiAwKSB8fCAoIXJlZ3VsYXIgJiYgc2Vla2FibGUpIHx8ICFOSUxQ IChlbmQpKQotICAgIHRvdGFsID0gZW5kX29mZnNldCAtIGJlZ19vZmZzZXQ7Ci0gIGVsc2UK LSAgICAvKiBGb3IgYSBzcGVjaWFsIGZpbGUgdGhhdCBpcyBub3Qgc2Vla2FibGUsIGFsbCB3 ZSBjYW4gZG8gaXMgZ3Vlc3MuICAqLwotICAgIHRvdGFsID0gUkVBRF9CVUZfU0laRTsKLQot ICAvKiBGcm9tIGhlcmUgb24sIHRyZWF0IGEgZmlsZSB3aXRoIHplcm8gc2l6ZSBhcyBub3Qg c2Vla2FibGUuICBUaGlzCi0gICAgIGNhdXNlcyB1cyB0byByZWFkIHVudGlsIHdlIGFjdHVh bGx5IGhpdCBFT0YuICAqLwotICBpZiAocmVndWxhciAmJiBzdC5zdF9zaXplID09IDApCi0g ICAgc2Vla2FibGUgPSBmYWxzZTsKKyAgdG90YWwgPSBlbmRfb2Zmc2V0IC0gYmVnX29mZnNl dDsKIAogICBpZiAoTklMUCAodmlzaXQpICYmIHRvdGFsID4gMCkKICAgICB7CkBAIC00Nzky LDEwICs0ODI1LDE2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0 X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgbW92ZV9nYXBfYm90 aCAoUFQsIFBUX0JZVEUpOwogCiAgIC8qIEVuc3VyZSB0aGUgZ2FwIGlzIGF0IGxlYXN0IG9u ZSBieXRlIGxhcmdlciB0aGFuIG5lZWRlZCBmb3IgdGhlCi0gICAgIGVzdGltYXRlZCBmaWxl IHNpemUsIHNvIHRoYXQgaW4gdGhlIHVzdWFsIGNhc2Ugd2UgcmVhZCB0byBFT0YKKyAgICAg ZXN0aW1hdGVkIGluc2VydGlvbiwgc28gdGhhdCBpbiB0aGUgdXN1YWwgY2FzZSB3ZSByZWFk CiAgICAgIHdpdGhvdXQgcmVhbGxvY2F0aW5nLiAgKi8KLSAgaWYgKEdBUF9TSVpFIDw9IHRv dGFsKQotICAgIG1ha2VfZ2FwICh0b3RhbCAtIEdBUF9TSVpFICsgMSk7CisgIG9mZl90IGlu c2VydGVkX2VzdGltYXRlID0gbWluIChlbmRfb2Zmc2V0LCBmaWxlX3NpemVfaGludCkgLSBi ZWdfb2Zmc2V0OworICBpZiAoR0FQX1NJWkUgPD0gaW5zZXJ0ZWRfZXN0aW1hdGUpCisgICAg eworICAgICAgcHRyZGlmZl90IGdyb3d0aDsKKyAgICAgIGlmIChja2Rfc3ViICgmZ3Jvd3Ro LCBpbnNlcnRlZF9lc3RpbWF0ZSwgR0FQX1NJWkUgLSAxKSkKKwlidWZmZXJfb3ZlcmZsb3cg KCk7CisgICAgICBtYWtlX2dhcCAoZ3Jvd3RoKTsKKyAgICB9CiAKICAgaWYgKGJlZ19vZmZz ZXQgIT0gMCB8fCAoIU5JTFAgKHJlcGxhY2UpCiAJCQkgICYmICFCQVNFX0VRIChyZXBsYWNl LCBRdW5ib3VuZCkpKQpAQCAtNDgxMiwyMyArNDg1MSwyMiBAQCBERUZVTiAoImluc2VydC1m aWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29u dGVudHMsCiAgIHsKICAgICBwdHJkaWZmX3QgZ2FwX3NpemUgPSBHQVBfU0laRTsKIAotICAg IHdoaWxlIChOSUxQIChlbmQpIHx8IGluc2VydGVkIDwgdG90YWwpCisgICAgd2hpbGUgKGlu c2VydGVkIDwgdG90YWwpCiAgICAgICB7Ci0JcHRyZGlmZl90IHRoaXM7Ci0KLQlpZiAoZ2Fw X3NpemUgPT0gMCkKKwljaGFyICpidWY7CisJcHRyZGlmZl90IGJ1ZnNpemUsIHRoaXM7CisJ aWYgKGdhcF9zaXplIDwgdG90YWwgLSBpbnNlcnRlZCAmJiBnYXBfc2l6ZSA8IHNpemVvZiBy ZWFkX2J1ZikKIAkgIHsKLQkgICAgLyogVGhlIHNpemUgZXN0aW1hdGUgd2FzIHdyb25nLiAg TWFrZSB0aGUgZ2FwIDUwJSBsYXJnZXIuICAqLwotCSAgICBtYWtlX2dhcCAoR0FQX1NJWkUg Pj4gMSk7Ci0JICAgIGdhcF9zaXplID0gR0FQX1NJWkUgLSBpbnNlcnRlZDsKKwkgICAgYnVm ID0gcmVhZF9idWY7CisJICAgIGJ1ZnNpemUgPSBzaXplb2YgcmVhZF9idWY7CisJICB9CisJ ZWxzZQorCSAgeworCSAgICBidWYgPSAoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZVEUgLSBC RUdfQllURSArIGluc2VydGVkOworCSAgICBidWZzaXplID0gbWluIChtaW4gKGdhcF9zaXpl LCB0b3RhbCAtIGluc2VydGVkKSwgSU9fQlVGU0laRSk7CiAJICB9CiAKLQkvKiAndHJ5JyBp cyByZXNlcnZlZCBpbiBzb21lIGNvbXBpbGVycyAoTWljcm9zb2Z0IEMpLiAgKi8KLQlwdHJk aWZmX3QgdHJ5dHJ5ID0gbWluIChnYXBfc2l6ZSwgUkVBRF9CVUZfU0laRSk7Ci0JaWYgKHNl ZWthYmxlIHx8ICFOSUxQIChlbmQpKQotCSAgdHJ5dHJ5ID0gbWluICh0cnl0cnksIHRvdGFs IC0gaW5zZXJ0ZWQpOwotCi0JaWYgKCFzZWVrYWJsZSAmJiBOSUxQIChlbmQpKQorCWlmICgh c2Vla2FibGUgJiYgZW5kX29mZnNldCA9PSBUWVBFX01BWElNVU0gKG9mZl90KSkKIAkgIHsK IAkgICAgTGlzcF9PYmplY3QgbmJ5dGVzOwogCSAgICBpbnRtYXhfdCBudW1iZXI7CkBAIC00 ODM2LDQzICs0ODc0LDU2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5z ZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKIAkgICAgLyogUmVh ZCBmcm9tIHRoZSBmaWxlLCBjYXB0dXJpbmcgYHF1aXQnLiAgV2hlbiBhbgogCSAgICAgICBl cnJvciBvY2N1cnMsIGVuZCB0aGUgbG9vcCwgYW5kIGFycmFuZ2UgZm9yIGEgcXVpdAogCSAg ICAgICB0byBiZSBzaWduYWxlZCBhZnRlciBkZWNvZGluZyB0aGUgdGV4dCB3ZSByZWFkLiAg Ki8KLQkgICAgdW5pb24gcmVhZF9ub25fcmVndWxhciBkYXRhID0ge3tmZCwgaW5zZXJ0ZWQs IHRyeXRyeX19OworCSAgICB1bmlvbiByZWFkX25vbl9yZWd1bGFyIGRhdGEgPSB7e2ZkLCBi dWYsIGJ1ZnNpemV9fTsKIAkgICAgbmJ5dGVzID0gaW50ZXJuYWxfY29uZGl0aW9uX2Nhc2Vf MQogCSAgICAgIChyZWFkX25vbl9yZWd1bGFyLCBtYWtlX3BvaW50ZXJfaW50ZWdlciAoJmRh dGEpLAogCSAgICAgICBRZXJyb3IsIHJlYWRfbm9uX3JlZ3VsYXJfcXVpdCk7CiAKIAkgICAg aWYgKE5JTFAgKG5ieXRlcykpCiAJICAgICAgewotCQlyZWFkX3F1aXQgPSAxOworCQlyZWFk X3F1aXQgPSAtMTsKIAkJYnJlYWs7CiAJICAgICAgfQogCi0JICAgIGlmICghaW50ZWdlcl90 b19pbnRtYXggKG5ieXRlcywgJm51bWJlcikKLQkJJiYgbnVtYmVyID4gUFRSRElGRl9NQVgp Ci0JICAgICAgYnVmZmVyX292ZXJmbG93ICgpOwotCisJICAgIGludGVnZXJfdG9faW50bWF4 IChuYnl0ZXMsICZudW1iZXIpOwogCSAgICB0aGlzID0gbnVtYmVyOwogCSAgfQogCWVsc2UK IAkgIC8qIEFsbG93IHF1aXR0aW5nIG91dCBvZiB0aGUgYWN0dWFsIEkvTy4gIFdlIGRvbid0 IG1ha2UgdGV4dAogCSAgICAgcGFydCBvZiB0aGUgYnVmZmVyIHVudGlsIGFsbCB0aGUgcmVh ZGluZyBpcyBkb25lLCBzbyBhCiAJICAgICBDLWcgaGVyZSBkb2Vzbid0IGRvIGFueSBoYXJt LiAgKi8KLQkgIHRoaXMgPSBlbWFjc19mZF9yZWFkIChmZCwKLQkJCQkoKGNoYXIgKikgQkVH X0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKLQkJCQkgKyBpbnNlcnRlZCksCi0JCQkJdHJ5 dHJ5KTsKKwkgIHsKKwkgICAgdGhpcyA9IGVtYWNzX2ZkX3JlYWQgKGZkLCBidWYsIGJ1ZnNp emUpOwkJCQkJICAgIGlmICh0aGlzIDwgMCkKKwkgICAgICB0aGlzID0gLWVycm5vOworCSAg fQogCiAJaWYgKHRoaXMgPD0gMCkKIAkgIHsKLQkgICAgcmVhZF9xdWl0ID0gdGhpczsKKwkg ICAgcmVhZF9xdWl0ID0gLXRoaXM7CiAJICAgIGJyZWFrOwogCSAgfQogCisJaWYgKGJ1ZiA9 PSByZWFkX2J1ZikKKwkgIHsKKwkgICAgaWYgKGdhcF9zaXplIDwgdGhpcykKKwkgICAgICB7 CisJCS8qIFNpemUgZXN0aW1hdGUgd2FzIGxvdy4gIE1ha2UgdGhlIGdhcCBhdCBsZWFzdCA1 MCUgbGFyZ2VyLAorCQkgICBhbmQgYmlnIGVub3VnaCBzbyB0aGF0IHRoZSBuZXh0IGxvb3Ag aXRlcmF0aW9uIHdpbGwKKwkJICAgdXNlIHRoZSBnYXAgZGlyZWN0bHkgaW5zdGVhZCBvZiBj b3B5aW5nIHZpYSByZWFkX2J1Zi4gICovCisJCW1ha2VfZ2FwIChtYXggKEdBUF9TSVpFID4+ IDEsCisJCQkgICAgICAgdGhpcyAtIGdhcF9zaXplICsgc2l6ZW9mIHJlYWRfYnVmKSk7CisJ CWdhcF9zaXplID0gR0FQX1NJWkUgLSBpbnNlcnRlZDsKKwkgICAgICB9CisJICAgIG1lbWNw eSAoQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUgKyBpbnNlcnRlZCwKKwkJICAgIHJl YWRfYnVmLCB0aGlzKTsKKwkgIH0KIAlnYXBfc2l6ZSAtPSB0aGlzOwogCWluc2VydGVkICs9 IHRoaXM7CiAgICAgICB9CiAgIH0KIAorICBmaWxlX3NpemVfaGludCA9IGJlZ19vZmZzZXQg KyBpbnNlcnRlZDsKKwogICAvKiBOb3cgd2UgaGF2ZSBlaXRoZXIgcmVhZCBhbGwgdGhlIGZp bGUgZGF0YSBpbnRvIHRoZSBnYXAsCiAgICAgIG9yIHN0b3AgcmVhZGluZyBvbiBJL08gZXJy b3Igb3IgcXVpdC4gIElmIG5vdGhpbmcgd2FzCiAgICAgIHJlYWQsIHVuZG8gbWFya2luZyB0 aGUgYnVmZmVyIG1vZGlmaWVkLiAgKi8KQEAgLTQ4ODksOCArNDk0MCw4IEBAIERFRlVOICgi aW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRf ZmlsZV9jb250ZW50cywKICAgZW1hY3NfZmRfY2xvc2UgKGZkKTsKICAgY2xlYXJfdW53aW5k X3Byb3RlY3QgKGZkX2luZGV4KTsKIAotICBpZiAocmVhZF9xdWl0IDwgMCkKLSAgICByZXBv cnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBvcmlnX2ZpbGVuYW1lKTsKKyAgaWYgKDAg PCByZWFkX3F1aXQpCisgICAgcmVwb3J0X2ZpbGVfZXJybm8gKCJSZWFkIGVycm9yIiwgb3Jp Z19maWxlbmFtZSwgcmVhZF9xdWl0KTsKIAogIG5vdGZvdW5kOgogCkBAIC01MDMyLDcgKzUw ODMsNyBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2Nv bnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAgICAgICBpZiAoTklMUCAoaGFuZGxl cikpCiAJewogCSAgY3VycmVudF9idWZmZXItPm1vZHRpbWUgPSBtdGltZTsKLQkgIGN1cnJl bnRfYnVmZmVyLT5tb2R0aW1lX3NpemUgPSBzdC5zdF9zaXplOworCSAgY3VycmVudF9idWZm ZXItPm1vZHRpbWVfc2l6ZSA9IGZpbGVfc2l6ZV9oaW50OwogCSAgYnNldF9maWxlbmFtZSAo Y3VycmVudF9idWZmZXIsIG9yaWdfZmlsZW5hbWUpOwogCX0KIApAQCAtNTA0NSwxNCArNTA5 Niw2IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29u dGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKIAkgICAgRnVubG9ja19maWxlIChCVkFS IChjdXJyZW50X2J1ZmZlciwgZmlsZV90cnVlbmFtZSkpOwogCSAgRnVubG9ja19maWxlIChm aWxlbmFtZSk7CiAJfQotCi0jaWYgIWRlZmluZWQgSEFWRV9BTkRST0lEIHx8IGRlZmluZWQg QU5EUk9JRF9TVFVCSUZZCi0gICAgICAvKiBVbmRlciBBbmRyb2lkLCBtb2R0aW1lIGFuZCBz dC5zdF9zaXplIGNhbiBiZSB2YWxpZCBldmVuIGlmIEZECi0JIGlzIG5vdCBhIHJlZ3VsYXIg ZmlsZS4gICovCi0gICAgICBpZiAoIXJlZ3VsYXIpCi0JeHNpZ25hbDIgKFFmaWxlX2Vycm9y LAotCQkgIGJ1aWxkX3N0cmluZyAoIm5vdCBhIHJlZ3VsYXIgZmlsZSIpLCBvcmlnX2ZpbGVu YW1lKTsKLSNlbmRpZiAvKiAhZGVmaW5lZCBIQVZFX0FORFJPSUQgfHwgZGVmaW5lZCBBTkRS T0lEX1NUVUJJRlkgKi8KICAgICB9CiAKICAgaWYgKHNldF9jb2Rpbmdfc3lzdGVtKQo= --------------tQXG0AkDmOGzHTsaC9GRCJQI-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 14 07:51:25 2025 Received: (at 77315) by debbugs.gnu.org; 14 Jul 2025 11:51:25 +0000 Received: from localhost ([127.0.0.1]:60270 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ubHiO-0006fn-Nb for submit@debbugs.gnu.org; Mon, 14 Jul 2025 07:51:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42496) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ubHiL-0006fN-1l for 77315@debbugs.gnu.org; Mon, 14 Jul 2025 07:51:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ubHiB-00028q-5E; Mon, 14 Jul 2025 07:51:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=edwcMQYZ8C1wOzXRCXD9cyulY3AR64MQ2jKUquttun4=; b=aAMi9za4k3E0 QOYyjeOVztYrslVtf9apYmmhKrLD23m60cRQAKz+vTlUFrHTZF5f1reV9wIEbGVdMG9cqbAizwzmu iKh4gb8H4P07YlT5RdDQymwAaoXUny4YFjZawFd4g8NXWYCC6U1v6ZzzGZu5DmwHFefp7fPi/iFoZ e0ET9H44IJnSRd+9oLBqIECunncrwsVdF2yU2qKB+ApoZWI1Zl7vU5s/w523xDcBMEq7AMaf/W9R2 5sz5bV/SXqFBbSuLW1EDdFWcfRD+3pynlNWsioeWzjrPCBet2SEz39IyrjpJsDpsJL1OWTTOb2U/K kZ/k84RjEY1IbApnjq4Yyg==; Date: Mon, 14 Jul 2025 14:50:23 +0300 Message-Id: <861pqjc7pc.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert In-Reply-To: <322339d6-7c61-4af2-acb0-a616aa6667d1@cs.ucla.edu> (message from Paul Eggert on Sun, 13 Jul 2025 21:24:44 -0700) Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> <87v7p76cz7.fsf@protonmail.com> <322339d6-7c61-4af2-acb0-a616aa6667d1@cs.ucla.edu> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, pipcet@protonmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 13 Jul 2025 21:24:44 -0700 > Cc: 77315@debbugs.gnu.org, Eli Zaretskii > From: Paul Eggert > > On 2025-06-07 03:52, Pip Cet wrote: > > I'm hitting this bug with some regularity (and working around it by > > force-returning from Finsert_file_contents in gdb) on the MPS branch. > > It's not a problem, but I am occasionally reminded it's still there :-) > > I finally shook loose some free time to work on this, and installed a > series of patches into master which I hope fix the bug. Please give the > patches a try. For convenience in review, I'm attaching a single diff > combining all the patches, or you can look in the Git repository if you > prefer to see each of the two dozen or so patches individually. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 21 19:30:33 2025 Received: (at 77315) by debbugs.gnu.org; 21 Jul 2025 23:30:33 +0000 Received: from localhost ([127.0.0.1]:60211 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1udzxn-0005k5-9k for submit@debbugs.gnu.org; Mon, 21 Jul 2025 19:30:33 -0400 Received: from mail.cs.ucla.edu ([131.179.128.66]:47612) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1udzxi-0005jf-Vl for 77315@debbugs.gnu.org; Mon, 21 Jul 2025 19:30:28 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 1EC1D3C01085C; Mon, 21 Jul 2025 16:30:21 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id 8pn7GxGUd1K6; Mon, 21 Jul 2025 16:30:21 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id EA0F93C0149D0; Mon, 21 Jul 2025 16:30:20 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu EA0F93C0149D0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1753140621; bh=ro5aqCRhgl1uINxT6dqHxfecbbRYicVfJb/pqeQKNCc=; h=Message-ID:Date:MIME-Version:From:To; b=H9DT1khwN+pCGfryuyHwpdZhwGHeesq3mdPQciJx9TmbwG81/pbSHT+9qg81oHQ/L wC2xQDdlN7nu9GwBd9KQls6meVqDpvSnuCgOw7ihQSjj3O1elY7xulRxfHzVAtCX2t +dQOpkoW5eX8kuzYRPnj10eveWZDlIrOlw0L4FqrvgQId//qYs/Gv+VQbUVYv1cxDG AKrgoNsByNTylj1W3bovb3cWs0JnylP9f98xkt0uinlAvNyjLLjHj4ZSlbyh5qJi0p 7et2vWCINjnM9OAt2qKCDiNPw59gbUM8WpuN5wz/pRF2+rv2oJlh3feSL64H2WmcGc XkYLa72DX9TbA== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id lhnGcwQNH4oE; Mon, 21 Jul 2025 16:30:20 -0700 (PDT) Received: from penguin.cs.ucla.edu (unknown [47.154.30.222]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id C369A3C01085C; Mon, 21 Jul 2025 16:30:20 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------7IT646j308hj7xBAp8lVoLdy" Message-ID: Date: Mon, 21 Jul 2025 16:30:19 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#77315: 31.0.50; Crash in Finsert_file_contents, file size changed From: Paul Eggert To: Pip Cet References: <8734eyqyho.fsf@protonmail.com> <86v7rubg1g.fsf@gnu.org> <324123b5-a4e7-44da-b778-debf71b9efc4@cs.ucla.edu> <86ldsqbc19.fsf@gnu.org> <86tt6slekm.fsf@gnu.org> <87v7p76cz7.fsf@protonmail.com> <322339d6-7c61-4af2-acb0-a616aa6667d1@cs.ucla.edu> Content-Language: en-US Organization: UCLA Computer Science Department In-Reply-To: <322339d6-7c61-4af2-acb0-a616aa6667d1@cs.ucla.edu> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77315 Cc: 77315@debbugs.gnu.org, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------7IT646j308hj7xBAp8lVoLdy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit After some further testing and code review of the Bug#77135 fixes, I came up with some additional patches, which I just now installed on Emacs master on Savannah. The goal is to make insert-file-contents a little bit less messy, and a little less buggy in unlikely situations and platforms. I hope it works for you too. I'm attaching the union of all 15 patches for easy review, or you can look at the individual changes by inspecting each individual Git commits. --------------7IT646j308hj7xBAp8lVoLdy Content-Type: text/x-patch; charset=UTF-8; name="bug-77315-further-fixes.diff" Content-Disposition: attachment; filename="bug-77315-further-fixes.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuaCBiL3NyYy9idWZmZXIuaAppbmRleCAyNmEzMzRl YTgxMC4uMzAyZGFhYzNlMDQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuaAorKysgYi9zcmMv YnVmZmVyLmgKQEAgLTY0OSwxMSArNjQ5LDEyIEBAICNkZWZpbmUgQlZBUihidWYsIGZpZWxk KSAoKGJ1ZiktPmZpZWxkICMjIF8pCiAgICAgIGluIG5vIGNhc2UgY29tcGxhaW4gYWJvdXQg YW55IG1pc21hdGNoIG9uIG5leHQgc2F2ZSBhdHRlbXB0LiAgKi8KICAgc3RydWN0IHRpbWVz cGVjIG1vZHRpbWU7CiAKLSAgLyogU2l6ZSBvZiB0aGUgZmlsZSB3aGVuIG1vZHRpbWUgd2Fz IHNldC4gIFRoaXMgaXMgdXNlZCB0byBkZXRlY3QgdGhlCi0gICAgIGNhc2Ugd2hlcmUgdGhl IGZpbGUgZ3JldyB3aGlsZSB3ZSB3ZXJlIHJlYWRpbmcgaXQsIHNvIHRoZSBtb2R0aW1lCi0g ICAgIGlzIHN0aWxsIHRoZSBzYW1lIChzaW5jZSBpdCdzIHJvdW5kZWQgdXAgdG8gc2Vjb25k cykgYnV0IHdlJ3JlIGFjdHVhbGx5Ci0gICAgIG5vdCB1cC10by1kYXRlLiAgLTEgbWVhbnMg dGhlIHNpemUgaXMgdW5rbm93bi4gIE9ubHkgbWVhbmluZ2Z1bCBpZgotICAgICBtb2R0aW1l IGlzIGFjdHVhbGx5IHNldC4gICovCisgIC8qIFNpemUgb2YgdGhlIGZpbGUgd2hlbiBtb2R0 aW1lIHdhcyBzZXQuICBUaGlzIGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4KKyAgICAgdGhlIGZp bGUgc2l6ZSBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgcmVhZGluZyB0aGUgZmlsZSwgYnV0IHRo ZQorICAgICBtb2R0aW1lIGlzIHN0aWxsIHRoZSBzYW1lIChzaW5jZSBpdCdzIHRydW5jYXRl ZCB0byBjbG9jayByZXNvbHV0aW9uKQorICAgICBzbyB3ZSdyZSBhY3R1YWxseSBub3QgdXAt dG8tZGF0ZS4gIE1lYW5pbmdmdWwgb25seSBpZiBpdCBpcworICAgICBub25uZWdhdGl2ZSBh bmQgdGhlIG1vZHRpbWUgaXMgYWN0dWFsbHkgc2V0LiAgVXNlZnVsIG9ubHkgb24KKyAgICAg cGxhdGZvcm1zIHdpdGggY29hcnNlIGNsb2NrIHJlc29sdXRpb24uICAqLwogICBvZmZfdCBt b2R0aW1lX3NpemU7CiAKICAgLyogVGhlIHZhbHVlIG9mIHRleHQtPm1vZGlmZiBhdCB0aGUg bGFzdCBhdXRvLXNhdmUuICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLmMgYi9zcmMvZW1h Y3MuYwppbmRleCBjZjhmNGJkNjNmNy4uNmU4ZWY4M2E4MWIgMTAwNjQ0Ci0tLSBhL3NyYy9l bWFjcy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC0xMTIwLDE2ICsxMTIwLDcgQEAgcmVhZF9m dWxsIChpbnQgZmQsIHZvaWQgKmJ1ZmZlciwgcHRyZGlmZl90IHNpemUpCiAgIGVhc3NlcnQg KDAgPD0gZmQpOwogICBlYXNzZXJ0IChidWZmZXIgIT0gTlVMTCk7CiAgIGVhc3NlcnQgKDAg PD0gc2l6ZSk7Ci0gIGVudW0KLSAgewotICAvKiBTZWUgTUFYX1JXX0NPVU5UIGluIHN5c2Rl cC5jLiAgKi8KLSNpZmRlZiBNQVhfUldfQ09VTlQKLSAgICBtYXhfc2l6ZSA9IE1BWF9SV19D T1VOVAotI2Vsc2UKLSAgICBtYXhfc2l6ZSA9IElOVF9NQVggPj4gMTggPDwgMTgKLSNlbmRp ZgotICB9OwotICBpZiAoUFRSRElGRl9NQVggPCBzaXplIHx8IG1heF9zaXplIDwgc2l6ZSkK KyAgaWYgKG1heCAoUFRSRElGRl9NQVgsIE1BWF9SV19DT1VOVCkgPCBzaXplKQogICAgIHsK ICAgICAgIGVycm5vID0gRUZCSUc7CiAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9z cmMvZmlsZWlvLmMgYi9zcmMvZmlsZWlvLmMKaW5kZXggYTllNTk3NWEyZWIuLmVhZDgzM2E2 YWMwIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC0z OTAzLDggKzM5MDMsMTUgQEAgZGVjaWRlX2NvZGluZ191bndpbmQgKExpc3BfT2JqZWN0IHVu d2luZF9kYXRhKQogewogICBzdHJ1Y3QKICAgeworICAgIC8qIEZpbGUgZGVzY3JpcHRvciB0 byByZWFkIGZyb20uICAqLwogICAgIGVtYWNzX2ZkIGZkOworCisgICAgLyogSWYgQlVGIGlz IG5vbi1udWxsLCByZWFkIGludG8gQlVGOyBvdGhlcndpc2UsIHJlYWQgaW50bworICAgICAg IGdhcCArIElOU0VSVEVEIChkb25lIHRoaXMgd2F5IGJlY2F1c2UgdGhlIGdhcCBjYW4gcmVs b2NhdGUpLiAgKi8KICAgICBjaGFyICpidWY7CisgICAgcHRyZGlmZl90IGluc2VydGVkOwor CisgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHRyeSB0byByZWFkLiAgKi8KICAgICBwdHJk aWZmX3QgYnVmc2l6ZTsKICAgfSBzOwogICBHQ0FMSUdORURfVU5JT05fTUVNQkVSCkBAIC0z OTE1LDcgKzM5MjIsMTIgQEAgc3RhdGljX2Fzc2VydCAoR0NBTElHTkVEICh1bmlvbiByZWFk X25vbl9yZWd1bGFyKSk7CiByZWFkX25vbl9yZWd1bGFyIChMaXNwX09iamVjdCBzdGF0ZSkK IHsKICAgdW5pb24gcmVhZF9ub25fcmVndWxhciAqZGF0YSA9IFhGSVhOVU1QVFIgKHN0YXRl KTsKLSAgaW50bWF4X3QgbmJ5dGVzID0gZW1hY3NfZmRfcmVhZCAoZGF0YS0+cy5mZCwgZGF0 YS0+cy5idWYsIGRhdGEtPnMuYnVmc2l6ZSk7CisgIGludG1heF90IG5ieXRlcworICAgID0g ZW1hY3NfZmRfcmVhZCAoZGF0YS0+cy5mZCwKKwkJICAgICAoZGF0YS0+cy5idWYgPyBkYXRh LT5zLmJ1ZgorCQkgICAgICA6ICgoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZVEUgLSBCRUdf QllURQorCQkJICsgZGF0YS0+cy5pbnNlcnRlZCkpLAorCQkgICAgIGRhdGEtPnMuYnVmc2l6 ZSk7CiAgIHJldHVybiBtYWtlX2ludCAobmJ5dGVzIDwgMCA/IC1lcnJubyA6IG5ieXRlcyk7 CiB9CiAKQEAgLTQwMjYsOSArNDAzOCwxNiBAQCBtYXliZV9tb3ZlX2dhcCAoc3RydWN0IGJ1 ZmZlciAqYikKICAgICB9CiB9CiAKLS8qIEEgZ29vZCBibG9ja3NpemUgdG8gbWluaW1pemUg c3lzdGVtIGNhbGwgb3ZlcmhlYWQgYWNyb3NzIG1vc3Qgc3lzdGVtcy4KLSAgIFRha2VuIGZy b20gY29yZXV0aWxzL3NyYy9pb2Jsa3NpemUuaCBhcyBvZiBKdWx5IDIwMjUuICAqLwotZW51 bSB7IElPX0JVRlNJWkUgPSAyNTYgKiAxMDI0IH07CisvKiBJbiBGRCwgcG9zaXRpb24gdG8g UE9TIHJlbGF0aXZlIHRvIFdIRU5DRS4gIFJldHVybiB0aGUgcmVzdWx0aW5nCisgICBwb3Np dGlvbiBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2Ugc2lnbmFsIGFuIGVycm9yIHdpdGggRklM RU5BTUUuICAqLworc3RhdGljIG9mZl90Cit4bHNlZWsgKGVtYWNzX2ZkIGZkLCBvZmZfdCBw b3MsIGludCB3aGVuY2UsIExpc3BfT2JqZWN0IGZpbGVuYW1lKQoreworICBvZmZfdCBuZXdw b3MgPSBlbWFjc19mZF9sc2VlayAoZmQsIHBvcywgd2hlbmNlKTsKKyAgaWYgKG5ld3BvcyA8 IDApCisgICAgcmVwb3J0X2ZpbGVfZXJyb3IgKCJTZXR0aW5nIGZpbGUgcG9zaXRpb24iLCBm aWxlbmFtZSk7CisgIHJldHVybiBuZXdwb3M7Cit9CiAKIC8qIEZJWE1FOiBpbnNlcnQtZmls ZS1jb250ZW50cyBzaG91bGQgYmUgc3BsaXQgd2l0aCB0aGUgdG9wLWxldmVsIG1vdmVkIHRv CiAgICBFbGlzcCBhbmQgb25seSB0aGUgY29yZSBrZXB0IGluIEMuICAqLwpAQCAtNDA3NCw2 ICs0MDkzLDE0IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2Zp bGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgKExpc3BfT2JqZWN0IGZp bGVuYW1lLCBMaXNwX09iamVjdCB2aXNpdCwgTGlzcF9PYmplY3QgYmVnLCBMaXNwX09iamVj dCBlbmQsCiAgICBMaXNwX09iamVjdCByZXBsYWNlKQogeworICAvKiBBIGdvb2QgcmVhZCBi bG9ja3NpemUgZm9yIGluc2VydC1maWxlLWNvbnRlbnRzLgorICAgICBJdCBpcyBmb3IgcmVh ZGluZyBhIGJpZyBjaHVuayBvZiBhIGZpbGUgaW50byBtZW1vcnksCisgICAgIGFzIG9wcG9z ZWQgdG8gY29yZXV0aWxzIElPX0JVRlNJWkUgd2hpY2ggaXMgZm9yICdjYXQnLWxpa2Ugc3Ry ZWFtIHJlYWRzLgorICAgICBJZiB0b28gc21hbGwsIGluc2VydC1maWxlLWNvbnRlbnRzIGhh cyBtb3JlIHN5c2NhbGwgb3ZlcmhlYWQuCisgICAgIElmIHRvbyBsYXJnZSwgaW5zZXJ0LWZp bGUtY29udGVudHMgbWlnaHQgdGFrZSB0b28gbG9uZyByZXNwb25kIHRvIGEgcXVpdC4KKyAg ICAgMSBNaUIgc2hvdWxkIGJlIHJlYXNvbmFibGUgZXZlbiBmb3Igb2xkZXIsIHNsb3dlciBk ZXZpY2VzIGNpcmNhIDIwMjUuICAqLworICBlbnVtIHsgSU5TRVJUX1JFQURfU0laRV9NQVgg PSBtaW4gKDEwMjQgKiAxMDI0LCBNQVhfUldfQ09VTlQpIH07CisKICAgc3RydWN0IHRpbWVz cGVjIG10aW1lOwogICBlbWFjc19mZCBmZDsKICAgcHRyZGlmZl90IGluc2VydGVkID0gMDsK QEAgLTQwODQsNyArNDExMSw3IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBG aW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgb2ZmX3Qg dG90YWwgPSAwOwogICBib29sIHJlZ3VsYXI7CiAgIGludCBzYXZlX2Vycm5vID0gMDsKLSAg Y2hhciByZWFkX2J1ZltNQVhfQUxMT0NBXTsKKyAgY2hhciByZWFkX2J1ZlttaW4gKCtNQVhf QUxMT0NBLCArSU5TRVJUX1JFQURfU0laRV9NQVgpXTsKICAgc3RydWN0IGNvZGluZ19zeXN0 ZW0gY29kaW5nOwogICBib29sIHJlcGxhY2VfaGFuZGxlZCA9IGZhbHNlOwogICBib29sIHNl dF9jb2Rpbmdfc3lzdGVtID0gZmFsc2U7CkBAIC00MTA3LDggKzQxMzQsOSBAQCBERUZVTiAo Imluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0 X2ZpbGVfY29udGVudHMsCiAgICAgIHJlc3RvcmVfd2luZG93X3BvaW50cyBuZWVkcyB0aGUg b2xkIGNoYXJhY3RlciBjb3VudC4gICovCiAgIHB0cmRpZmZfdCBzYW1lX2F0X2VuZF9jaGFy cG9zID0gWlY7CiAKLSAgLyogQSBoaW50IGFib3V0IHRoZSBmaWxlIHNpemUsIG9yIC0xIGlm IHRoZXJlIGlzIG5vIGhpbnQuICAqLwotICBvZmZfdCBmaWxlX3NpemVfaGludCA9IC0xOwor ICAvKiBUaGUgc2l6ZSByZXBvcnRlZCBieSBmc3RhdCwgb3IgLTEgaWYgdGhlIGZpbGUgd2Fz IG5vdCBmb3VuZCBvciBpdHMKKyAgICAgc2l6ZSBpcyBtZWFuaW5nbGVzcy4gICovCisgIG9m Zl90IHN0X3NpemUgPSAtMTsKIAogICBpZiAoY3VycmVudF9idWZmZXItPmJhc2VfYnVmZmVy ICYmICEgTklMUCAodmlzaXQpKQogICAgIGVycm9yICgiQ2Fubm90IGRvIGZpbGUgdmlzaXRp bmcgaW4gYW4gaW5kaXJlY3QgYnVmZmVyIik7CkBAIC00MTUyLDYgKzQxODAsMTMgQEAgREVG VU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2lu c2VydF9maWxlX2NvbnRlbnRzLAogICBvZmZfdCBiZWdfb2Zmc2V0ID0gIU5JTFAgKGJlZykg PyBmaWxlX29mZnNldCAoYmVnKSA6IDA7CiAgIG9mZl90IGVuZF9vZmZzZXQgPSAhTklMUCAo ZW5kKSA/IGZpbGVfb2Zmc2V0IChlbmQpIDogVFlQRV9NQVhJTVVNIChvZmZfdCk7CiAKKyAg LyogRU5EX09GRlNFVCBzaG91bGQgbmV2ZXIgYmUgbGVzcyB0aGFuIEJFR19PRkZTRVQsCisg ICAgIHNvIHRoYXQgY29kZSBjYW4gYXNzdW1lIHRoYXQgRU5EX09GRlNFVCAtIEJFR19PRkZT RVQgaXMgbm9ubmVnYXRpdmUuCisgICAgIFNvIHNldCBFTkRfT0ZGU0VUID0gbWF4IChFTkRf T0ZGU0VULCBCRUdfT0ZGU0VUKQorICAgICB3aGVuZXZlciBzZXR0aW5nIGVpdGhlciB2YXJp YWJsZSwKKyAgICAgdW5sZXNzIGl0IGlzIGFscmVhZHkga25vd24gdGhhdCBCRUdfT0ZGU0VU IDw9IEVORF9PRkZTRVQuICAqLworICBlbmRfb2Zmc2V0ID0gbWF4IChlbmRfb2Zmc2V0LCBi ZWdfb2Zmc2V0KTsKKwogICBmaWxlbmFtZSA9IEVOQ09ERV9GSUxFIChmaWxlbmFtZSk7CiAK ICAgZmQgPSBlbWFjc19mZF9vcGVuIChTU0RBVEEgKGZpbGVuYW1lKSwgT19SRE9OTFksIDAp OwpAQCAtNDIwMSwxMSArNDIzNiwxMiBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRz IiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAKICAg ICBpZiAocmVndWxhciB8IG1lbW9yeV9vYmplY3QpCiAgICAgICB7Ci0JZmlsZV9zaXplX2hp bnQgPSBzdC5zdF9zaXplOworCXN0X3NpemUgPSBzdC5zdF9zaXplOwogCi0JLyogQSBuZWdh dGl2ZSBzaXplIGNhbiBoYXBwZW4gb24gYSBwbGF0Zm9ybSB0aGF0IGFsbG93cyBmaWxlCi0J ICAgc2l6ZXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIG9mZl90IHZhbHVlLiAgKi8KLQlp ZiAoZmlsZV9zaXplX2hpbnQgPCAwKQorCS8qIE9uIHNvbWUgYW5jaWVudCBwbGF0Zm9ybXMs IGEgcmVndWxhciBmaWxlIHdpdGggYSBuZWdhdGl2ZSBzaXplIG1lYW5zCisJICAgdGhlIGFj dHVhbCBmaWxlIHNpemUgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIG9mZl90IHZhbHVl LgorCSAgIEZhaWwgbm93IHJhdGhlciB0aGFuIGRvaW5nIGEgbG90IG9mIHdvcmsgYW5kIGV4 aGF1c3RpbmcgbWVtb3J5LiAgKi8KKwlpZiAoc3Rfc2l6ZSA8IDApCiAJICBidWZmZXJfb3Zl cmZsb3cgKCk7CiAgICAgICB9CiAKQEAgLTQyMTQsMTUgKzQyNTAsNiBAQCBERUZVTiAoImlu c2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2Zp bGVfY29udGVudHMsCiAJICAgICA6IGdldF9zdGF0X210aW1lICgmc3QpKTsKICAgfQogCi0g IC8qIFRoZSBpbml0aWFsIG9mZnNldCBjYW4gYmUgbm9uemVybywgZS5nLiwgL2Rldi9zdGRp bi4KLSAgICAgUmVndWxhciBmaWxlcyBjYW4gYmUgbm9uLXNlZWthYmxlLCBlLmcuLCAvcHJv Yy9jcHVpbmZvIHdpdGggU0VFS19FTkQuICAqLwotICBvZmZfdCBpbml0aWFsX29mZnNldCA9 IGVtYWNzX2ZkX2xzZWVrIChmZCwgMCwgU0VFS19DVVIpOwotICBib29sIHNlZWthYmxlID0g MCA8PSBpbml0aWFsX29mZnNldDsKLSAgaWYgKHNlZWthYmxlICYmIE5JTFAgKGJlZykpCi0g ICAgYmVnX29mZnNldCA9IGluaXRpYWxfb2Zmc2V0OwotICBpZiAoZW5kX29mZnNldCA8PSBi ZWdfb2Zmc2V0KQotICAgIGdvdG8gaGFuZGxlZDsKLQogICAvKiBUaGUgUkVQTEFDRSBjb2Rl IHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIGluIG9yZGVyIHRvIHdvcmsgb24KICAgICAgbmFt ZWQgcGlwZXMsIGFuZCBpdCdzIHByb2JhYmx5IGp1c3Qgbm90IHdvcnRoIGl0LiAgU28gd2Ug c2hvdWxkCiAgICAgIGF0IGxlYXN0IHNpZ25hbCBhbiBlcnJvci4gICovCkBAIC00MjU2LDcg KzQyODMsNyBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxl X2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAgICAgIFRoaXMgc2F2ZXMgYSBs b3Qgb2YgbmVlZGxlc3Mgd29yayBiZWZvcmUgYSBidWZmZXIgb3ZlcmZsb3cuCiAgICAgIElm IExJS0VMWV9FTkQgaXMgbm9ubmVnYXRpdmUsIGl0IGlzIGxpa2VseSB3aGVyZSB3ZSB3aWxs IHN0b3AgcmVhZGluZy4KICAgICAgV2UgY291bGQgcmVhZCBtb3JlIChvciBsZXNzKSwgaWYg dGhlIGZpbGUgZ3Jvd3MgKG9yIHNocmlua3MpLiAgKi8KLSAgb2ZmX3QgbGlrZWx5X2VuZCA9 IG1pbiAoZW5kX29mZnNldCwgZmlsZV9zaXplX2hpbnQpOworICBvZmZfdCBsaWtlbHlfZW5k ID0gbWluIChlbmRfb2Zmc2V0LCBzdF9zaXplKTsKICAgaWYgKGJlZ19vZmZzZXQgPCBsaWtl bHlfZW5kKQogICAgIHsKICAgICAgIHB0cmRpZmZfdCBidWZfYnl0ZXMKQEAgLTQyNzAsNiAr NDI5Nyw5IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVf Y29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgLyogUHJldmVudCByZWRpc3Bs YXkgb3B0aW1pemF0aW9ucy4gICovCiAgIGN1cnJlbnRfYnVmZmVyLT5jbGlwX2NoYW5nZWQg PSB0cnVlOwogCisgIC8qIFRoZSBjdXJyZW50IGlucHV0IHBvc2l0aW9uIGlmIGtub3duLCAt MSBvdGhlcndpc2UuICAqLworICBvZmZfdCBjdXJwb3MgPSAtMTsKKwogICBpZiAoRVEgKFZj b2Rpbmdfc3lzdGVtX2Zvcl9yZWFkLCBRYXV0b19zYXZlX2NvZGluZykpCiAgICAgewogICAg ICAgY29kaW5nX3N5c3RlbSA9IGNvZGluZ19pbmhlcml0X2VvbF90eXBlIChRdXRmXzhfZW1h Y3MsIFF1bml4KTsKQEAgLTQyODcsMTQgKzQzMTcsMTcgQEAgREVGVU4gKCJpbnNlcnQtZmls ZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRl bnRzLAogICAgICAgZWxzZQogCXsKIAkgIC8qIERvbid0IHRyeSBsb29raW5nIGluc2lkZSBh IGZpbGUgZm9yIGEgY29kaW5nIHN5c3RlbQotCSAgICAgc3BlY2lmaWNhdGlvbiBpZiBpdCBp cyBub3QgYSByZWd1bGFyLCBzZWVrYWJsZSBmaWxlLiAgKi8KLQkgIGJvb2wgbG9va19pbnNp ZGUgPSAocmVndWxhciAmJiBzZWVrYWJsZQotCQkJICAgICAgJiYgIU5JTFAgKFZzZXRfYXV0 b19jb2RpbmdfZnVuY3Rpb24pKTsKLQkgIGlmIChsb29rX2luc2lkZSAmJiAwIDwgaW5pdGlh bF9vZmZzZXQKLQkgICAgICAmJiBlbWFjc19mZF9sc2VlayAoZmQsIDAsIFNFRUtfU0VUKSA8 IDApCi0JICAgIGxvb2tfaW5zaWRlID0gc2Vla2FibGUgPSBmYWxzZTsKLQkgIGlmIChsb29r X2luc2lkZSkKKwkgICAgIHNwZWNpZmljYXRpb24gaWYgaXQgaXMgbm90IGEgcmVndWxhciBm aWxlLiAgKi8KKwkgIGlmIChyZWd1bGFyICYmICFOSUxQIChWc2V0X2F1dG9fY29kaW5nX2Z1 bmN0aW9uKSkKIAkgICAgeworCSAgICAgIGlmICghTklMUCAoYmVnKSkKKwkJY3VycG9zID0g eGxzZWVrIChmZCwgYmVnX29mZnNldCwgU0VFS19TRVQsIG9yaWdfZmlsZW5hbWUpOworCSAg ICAgIGVsc2UKKwkJeworCQkgIGJlZ19vZmZzZXQgPSBjdXJwb3MgPSB4bHNlZWsgKGZkLCAw LCBTRUVLX0NVUiwgb3JpZ19maWxlbmFtZSk7CisJCSAgZW5kX29mZnNldCA9IG1heCAoZW5k X29mZnNldCwgYmVnX29mZnNldCk7CisJCX0KKwogCSAgICAgIC8qIEZpbmQgYSBjb2Rpbmcg c3lzdGVtIHNwZWNpZmllZCBpbiB0aGUgaGVhZGluZyB0d28KIAkJIGxpbmVzIG9yIGluIHRo ZSB0YWlsaW5nIHNldmVyYWwgbGluZXMgb2YgdGhlIGZpbGUuCiAJCSBBc3N1bWUgdGhhdCB0 aGUgMSBLaUIgYW5kIDMgS2lCIGZvciBoZWFkaW5nCkBAIC00MzAyLDM4ICs0MzM1LDM1IEBA IERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMs IFNpbnNlcnRfZmlsZV9jb250ZW50cywKIAkJIHB1cnBvc2UuICBCZWNhdXNlIHRoZSBmaWxl IG1heSBiZSBpbiAvcHJvYywKIAkJIGRvIG5vdCB1c2Ugc3Rfc2l6ZSBvciByZXBvcnQgYW55 IFNFRUtfRU5EIGZhaWx1cmUuICAqLwogCSAgICAgIHN0YXRpY19hc3NlcnQgKDQgKiAxMDI0 IDwgc2l6ZW9mIHJlYWRfYnVmKTsKLQkgICAgICBwdHJkaWZmX3QgbnJlYWQgPSBlbWFjc19m dWxsX3JlYWQgKGZkLCByZWFkX2J1ZiwgNCAqIDEwMjQpOwotCSAgICAgIGlmIChucmVhZCA8 IDQgKiAxMDI0KQotCQlmaWxlX3NpemVfaGludCA9IG5yZWFkOwotCSAgICAgIGVsc2UKKwkg ICAgICBwdHJkaWZmX3QKKwkJdHJpYWwgPSBtaW4gKGVuZF9vZmZzZXQgLSBiZWdfb2Zmc2V0 LCA0ICogMTAyNCksCisJCW5yZWFkID0gdHJpYWwgPyBlbWFjc19mdWxsX3JlYWQgKGZkLCBy ZWFkX2J1ZiwgdHJpYWwpIDogMDsKKwkgICAgICBjdXJwb3MgKz0gbnJlYWQ7CisKKwkgICAg ICBpZiAobnJlYWQgPT0gNCAqIDEwMjQgJiYgY3VycG9zIDwgZW5kX29mZnNldCkKIAkJewot CQkgIG9mZl90IHRhaWxvZmYgPSBlbWFjc19mZF9sc2VlayAoZmQsIC0gMyAqIDEwMjQsIFNF RUtfRU5EKTsKLQkJICBpZiAodGFpbG9mZiA8IDApCisJCSAgY3VycG9zID0gZW1hY3NfZmRf bHNlZWsgKGZkLCAtIDMgKiAxMDI0LCBTRUVLX0VORCk7CisJCSAgaWYgKGN1cnBvcyA8IDAp CisJCSAgICBjdXJwb3MgPSBiZWdfb2Zmc2V0ICsgbnJlYWQ7CisJCSAgZWxzZQogCQkgICAg ewotCQkgICAgICBzZWVrYWJsZSA9IGZhbHNlOwotCQkgICAgICB0YWlsb2ZmID0gbnJlYWQ7 CisJCSAgICAgIG9mZl90IGN1cm1heCA9IGVuZF9vZmZzZXQgLSAzICogMTAyNDsKKwkJICAg ICAgaWYgKGN1cm1heCA8IGN1cnBvcykKKwkJCWN1cnBvcyA9IHhsc2VlayAoZmQsIGN1cm1h eCwgU0VFS19TRVQsIG9yaWdfZmlsZW5hbWUpOwogCQkgICAgfQogCiAJCSAgLyogV2hlbiBh cHBlbmRpbmcgdGhlIGxhc3QgMyBLaUIsIHJlYWQgZXh0cmEgYnl0ZXMKLQkJICAgICB3aXRo b3V0IHRydXN0aW5nIHRhaWxvZmYsIGFzIHRoZSBmaWxlIG1heSBiZSBncm93aW5nLiAgKi8K LQkJICBucmVhZCA9IGVtYWNzX2Z1bGxfcmVhZCAoZmQsIHJlYWRfYnVmICsgMTAyNCwKLQkJ CQkJICAgc2l6ZW9mIHJlYWRfYnVmIC0gMTAyNCk7Ci0JCSAgaWYgKG5yZWFkID09IHNpemVv ZiByZWFkX2J1ZiAtIDEwMjQpCisJCSAgICAgd2l0aG91dCB0cnVzdGluZyBTRUVLX0VORCwg YXMgdGhlIGZpbGUgbWF5IGJlIGdyb3dpbmcuCisJCSAgICAgQWx0aG91Z2ggdGhpcyBtYXkg eWllbGQgbW9yZSB0aGFuIDQgS2lCIG9mIGRhdGEgdG90YWwsCisJCSAgICAgYW5kIHRoZSB0 cmFpbGluZyBkYXRhIG1heSBub3QgYmUgZnJvbSBmaWxlIGVuZCBpZgorCQkgICAgIHRoZSBm aWxlIGlzIGdyb3dpbmcsIGl0IGlzIGdvb2QgZW5vdWdoLiAgKi8KKwkJICBwdHJkaWZmX3Qg dHJpYWwgPSBtaW4gKGVuZF9vZmZzZXQgLSBjdXJwb3MsCisJCQkJCSBzaXplb2YgcmVhZF9i dWYgLSAxMDI0KTsKKwkJICBucmVhZCA9IGVtYWNzX2Z1bGxfcmVhZCAoZmQsIHJlYWRfYnVm ICsgMTAyNCwgdHJpYWwpOworCQkgIGlmICgwIDw9IG5yZWFkKQogCQkgICAgewotCQkgICAg ICAvKiBHaXZlIHVwIHJlYWRpbmcgdGhlIGxhc3QgMyBLaUI7IHRoZSBmaWxlIGlzCi0JCQkg Z3Jvd2luZyB0b28gcmFwaWRseS4gICovCi0JCSAgICAgIG5yZWFkID0gMTAyNDsKLQkJICAg IH0KLQkJICBlbHNlIGlmICgwIDw9IG5yZWFkKQotCQkgICAgewotCQkgICAgICBmaWxlX3Np emVfaGludCA9IHRhaWxvZmYgKyBucmVhZDsKKwkJICAgICAgY3VycG9zICs9IG5yZWFkOwog CQkgICAgICBucmVhZCArPSAxMDI0OwotCQkgICAgICBpZiAoNCAqIDEwMjQgPCBucmVhZCkK LQkJCXsKLQkJCSAgbWVtbW92ZSAocmVhZF9idWYgKyAxMDI0LAotCQkJCSAgIHJlYWRfYnVm ICsgbnJlYWQgLSAzICogMTAyNCwgMyAqIDEwMjQpOwotCQkJICBucmVhZCA9IDQgKiAxMDI0 OwotCQkJfQogCQkgICAgfQogCQl9CiAKQEAgLTQzNzEsMTAgKzQ0MDEsNiBAQCBERUZVTiAo Imluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0 X2ZpbGVfY29udGVudHMsCiAJCSAgLyogRGlzY2FyZCB0aGUgdW53aW5kIHByb3RlY3QgZm9y IHJlY292ZXJpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGJ1ZmZlci4g ICovCiAJCSAgc3BlY3BkbF9wdHItLTsKLQotCQkgIC8qIFJld2luZCB0aGUgZmlsZSBmb3Ig dGhlIGFjdHVhbCByZWFkIGRvbmUgbGF0ZXIuICAqLwotCQkgIGlmIChlbWFjc19mZF9sc2Vl ayAoZmQsIGluaXRpYWxfb2Zmc2V0LCBTRUVLX1NFVCkgPCAwKQotCQkgICAgcmVwb3J0X2Zp bGVfZXJyb3IgKCJTZXR0aW5nIGZpbGUgcG9zaXRpb24iLCBvcmlnX2ZpbGVuYW1lKTsKIAkJ fQogCSAgICB9CiAKQEAgLTQ0MzAsNTggKzQ0NTYsMjcgQEAgREVGVU4gKCJpbnNlcnQtZmls ZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRl bnRzLAogCSBnaXZlIHVwIG9uIGhhbmRsaW5nIFJFUExBQ0UgaW4gdGhlIG9wdGltaXplZCB3 YXkuICAqLwogICAgICAgYm9vbCBnaXZldXBfbWF0Y2hfZW5kID0gZmFsc2U7CiAKLSAgICAg IGlmIChiZWdfb2Zmc2V0ICE9IGluaXRpYWxfb2Zmc2V0KQorICAgICAgaWYgKGJlZ19vZmZz ZXQgIT0gY3VycG9zKQogCXsKLQkgIGlmIChlbWFjc19mZF9sc2VlayAoZmQsIGJlZ19vZmZz ZXQsIFNFRUtfU0VUKSA8IDApCi0JICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBm aWxlIHBvc2l0aW9uIiwgb3JpZ19maWxlbmFtZSk7CisJICBpZiAoIU5JTFAgKGJlZykgfHwg MCA8PSBjdXJwb3MpCisJICAgIGN1cnBvcyA9IHhsc2VlayAoZmQsIGJlZ19vZmZzZXQsIFNF RUtfU0VULCBvcmlnX2ZpbGVuYW1lKTsKKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGJlZ19v ZmZzZXQgPSBjdXJwb3MgPSB4bHNlZWsgKGZkLCAwLCBTRUVLX0NVUiwgb3JpZ19maWxlbmFt ZSk7CisJICAgICAgZW5kX29mZnNldCA9IG1heCAoZW5kX29mZnNldCwgYmVnX29mZnNldCk7 CisJICAgIH0KIAl9CiAKICAgICAgIC8qIENvdW50IGhvdyBtYW55IGNoYXJzIGF0IHRoZSBz dGFydCBvZiB0aGUgZmlsZQogCSBtYXRjaCB0aGUgdGV4dCBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBidWZmZXIuICAqLwogICAgICAgd2hpbGUgKHRydWUpCiAJewotCSAgb2ZmX3QgYnl0 ZXNfdG9fcmVhZCA9IHNpemVvZiByZWFkX2J1ZjsKLQkgIG9mZl90IGN1cnBvcyA9IGJlZ19v ZmZzZXQgKyAoc2FtZV9hdF9zdGFydCAtIEJFR1ZfQllURSk7Ci0JICBieXRlc190b19yZWFk ID0gbWluIChieXRlc190b19yZWFkLCBlbmRfb2Zmc2V0IC0gY3VycG9zKTsKLQkgIHB0cmRp ZmZfdCBucmVhZCA9IChieXRlc190b19yZWFkIDw9IDAKLQkJCSAgICAgPyAwCi0JCQkgICAg IDogZW1hY3NfZnVsbF9yZWFkIChmZCwgcmVhZF9idWYsIGJ5dGVzX3RvX3JlYWQpKTsKKwkg IHB0cmRpZmZfdCB0cmlhbCA9IG1pbiAoZW5kX29mZnNldCAtIGN1cnBvcywgc2l6ZW9mIHJl YWRfYnVmKTsKKwkgIHB0cmRpZmZfdCBucmVhZCA9IHRyaWFsID8gZW1hY3NfZmRfcmVhZCAo ZmQsIHJlYWRfYnVmLCB0cmlhbCkgOiAwOwogCSAgaWYgKG5yZWFkIDwgMCkKIAkgICAgcmVw b3J0X2ZpbGVfZXJyb3IgKCJSZWFkIGVycm9yIiwgb3JpZ19maWxlbmFtZSk7Ci0KLQkgIGlm ICgwIDwgbnJlYWQpCisJICBlbHNlIGlmIChucmVhZCA9PSAwKQogCSAgICB7Ci0JICAgICAg aWYgKENPRElOR19SRVFVSVJFX0RFVEVDVElPTiAoJmNvZGluZykpCi0JCXsKLQkJICBjb2Rp bmdfc3lzdGVtCi0JCSAgICA9IGRldGVjdF9jb2Rpbmdfc3lzdGVtICgodW5zaWduZWQgY2hh ciAqKSByZWFkX2J1ZiwKLQkJCQkJICAgIG5yZWFkLCBucmVhZCwgMSwgMCwKLQkJCQkJICAg IGNvZGluZ19zeXN0ZW0pOwotCQkgIHNldHVwX2NvZGluZ19zeXN0ZW0gKGNvZGluZ19zeXN0 ZW0sICZjb2RpbmcpOwotCQl9Ci0KLQkgICAgICBpZiAoQ09ESU5HX1JFUVVJUkVfREVDT0RJ TkcgKCZjb2RpbmcpKQotCQkvKiBXZSBmb3VuZCB0aGF0IHRoZSBmaWxlIHNob3VsZCBiZSBk ZWNvZGVkIHNvbWVob3cuCi0JCSAgIExldCdzIGdpdmUgdXAgaGVyZS4gICovCi0JCXsKLQkJ ICBnaXZldXBfbWF0Y2hfZW5kID0gdHJ1ZTsKLQkJICBicmVhazsKLQkJfQotCi0JICAgICAg cHRyZGlmZl90IGJ1ZnBvcyA9IDA7Ci0JICAgICAgcHRyZGlmZl90IGJ1ZnBvc2xpbSA9IG1p biAobnJlYWQsIHNhbWVfYXRfZW5kIC0gc2FtZV9hdF9zdGFydCk7Ci0JICAgICAgd2hpbGUg KGJ1ZnBvcyA8IGJ1ZnBvc2xpbQotCQkgICAgICYmIEZFVENIX0JZVEUgKHNhbWVfYXRfc3Rh cnQpID09IHJlYWRfYnVmW2J1ZnBvc10pCi0JCXNhbWVfYXRfc3RhcnQrKywgYnVmcG9zKys7 Ci0JICAgICAgLyogSWYgd2UgZm91bmQgYSBkaXNjcmVwYW5jeSwgc3RvcCB0aGUgc2Nhbi4g ICovCi0JICAgICAgaWYgKGJ1ZnBvcyAhPSBucmVhZCkKLQkJYnJlYWs7Ci0JICAgIH0KLQot CSAgaWYgKG5yZWFkIDwgYnl0ZXNfdG9fcmVhZCkKLQkgICAgewotCSAgICAgIGZpbGVfc2l6 ZV9oaW50ID0gY3VycG9zICsgbnJlYWQ7Ci0KIAkgICAgICAvKiBEYXRhIGluc2VydGVkIGZy b20gdGhlIGZpbGUgbWF0Y2ggdGhlIGJ1ZmZlcidzIGxlYWRpbmcgYnl0ZXMsCiAJCSBzbyB0 aGVyZSdzIG5vIG5lZWQgdG8gcmVwbGFjZSBhbnl0aGluZy4gICovCiAJICAgICAgZW1hY3Nf ZmRfY2xvc2UgKGZkKTsKQEAgLTQ0OTEsOCArNDQ4NiwzNCBAQCBERUZVTiAoImluc2VydC1m aWxlLWNvbnRlbnRzIiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29u dGVudHMsCiAJICAgICAgZGVsX3JhbmdlX2J5dGUgKHNhbWVfYXRfc3RhcnQsIHNhbWVfYXRf ZW5kKTsKIAkgICAgICBnb3RvIGhhbmRsZWQ7CiAJICAgIH0KKworCSAgY3VycG9zICs9IG5y ZWFkOworCisJICBpZiAoQ09ESU5HX1JFUVVJUkVfREVURUNUSU9OICgmY29kaW5nKSkKKwkg ICAgeworCSAgICAgIGNvZGluZ19zeXN0ZW0gPSBkZXRlY3RfY29kaW5nX3N5c3RlbSAoKHVu c2lnbmVkIGNoYXIgKikgcmVhZF9idWYsCisJCQkJCQkgICAgbnJlYWQsIG5yZWFkLCAxLCAw LAorCQkJCQkJICAgIGNvZGluZ19zeXN0ZW0pOworCSAgICAgIHNldHVwX2NvZGluZ19zeXN0 ZW0gKGNvZGluZ19zeXN0ZW0sICZjb2RpbmcpOworCSAgICB9CisKKwkgIGlmIChDT0RJTkdf UkVRVUlSRV9ERUNPRElORyAoJmNvZGluZykpCisJICAgIC8qIFdlIGZvdW5kIHRoYXQgdGhl IGZpbGUgc2hvdWxkIGJlIGRlY29kZWQgc29tZWhvdy4KKyAgICAgICAgICAgICAgIExldCdz IGdpdmUgdXAgaGVyZS4gICovCisJICAgIHsKKwkgICAgICBnaXZldXBfbWF0Y2hfZW5kID0g dHJ1ZTsKKwkgICAgICBicmVhazsKKwkgICAgfQorCisJICBwdHJkaWZmX3QgYnVmcG9zID0g MDsKKwkgIHB0cmRpZmZfdCBidWZwb3NsaW0gPSBtaW4gKG5yZWFkLCBzYW1lX2F0X2VuZCAt IHNhbWVfYXRfc3RhcnQpOworCSAgd2hpbGUgKGJ1ZnBvcyA8IGJ1ZnBvc2xpbQorCQkgJiYg RkVUQ0hfQllURSAoc2FtZV9hdF9zdGFydCkgPT0gcmVhZF9idWZbYnVmcG9zXSkKKwkgICAg c2FtZV9hdF9zdGFydCsrLCBidWZwb3MrKzsKKwkgIC8qIElmIHdlIGZvdW5kIGEgZGlzY3Jl cGFuY3ksIHN0b3AgdGhlIHNjYW4uICAqLworCSAgaWYgKGJ1ZnBvcyAhPSBucmVhZCkKKwkg ICAgYnJlYWs7CiAJfQotICAgICAgb2ZmX3Qgc2FtZV9hdF9zdGFydF9wb3MgPSBiZWdfb2Zm c2V0ICsgKHNhbWVfYXRfc3RhcnQgLSBCRUdWX0JZVEUpOwogCiAgICAgICAvKiBGaW5kIHRo ZSBlbmQgcG9zaXRpb24sIHdoaWNoIGlzIGVuZF9vZmZzZXQgaWYgZ2l2ZW4sCiAJIHRoZSBm aWxlJ3MgZW5kIG90aGVyd2lzZS4gICovCkBAIC00NTA1LDMxICs0NTI2LDI1IEBAIERFRlVO ICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNl cnRfZmlsZV9jb250ZW50cywKIAkgICAgewogCSAgICAgIGVuZHBvcyA9IGVtYWNzX2ZkX2xz ZWVrIChmZCwgMCwgU0VFS19FTkQpOwogCSAgICAgIGdpdmV1cF9tYXRjaF9lbmQgPSBlbmRw b3MgPCAwOwotCSAgICAgIGlmIChnaXZldXBfbWF0Y2hfZW5kKQotCQlzZWVrYWJsZSA9IGZh bHNlOwotCSAgICAgIGVsc2UKKwkgICAgICBpZiAoIWdpdmV1cF9tYXRjaF9lbmQpCiAJCXsK IAkJICAvKiBDaGVjayB0aGF0IHJlYWQgcmVwb3J0cyBFT0Ygc29vbiwgdG8gY2F0Y2ggcGxh dGZvcm1zCiAJCSAgICAgd2hlcmUgU0VFS19FTkQgY2FuIHJlcG9ydCB3aWxkbHkgc21hbGwg b2Zmc2V0cy4gICovCiAJCSAgcHRyZGlmZl90IG4gPSBlbWFjc19mdWxsX3JlYWQgKGZkLCBy ZWFkX2J1Ziwgc2l6ZW9mIHJlYWRfYnVmKTsKIAkJICBpZiAobiA8IDApCiAJCSAgICByZXBv cnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBvcmlnX2ZpbGVuYW1lKTsKLQkJICBlbmRw b3MgKz0gbjsKKwkJICBjdXJwb3MgPSBlbmRwb3MgKz0gbjsKIAogCQkgIC8qIEdpdmUgdXAg aWYgdGhlIGZpbGUgZ3JldyBtb3JlIHRoYW4gZXZlbiB0aGUgdGVzdCByZWFkLiAgKi8KIAkJ ICBnaXZldXBfbWF0Y2hfZW5kID0gbiA9PSBzaXplb2YgcmVhZF9idWY7CiAKIAkJICBpZiAo IWdpdmV1cF9tYXRjaF9lbmQpCiAJCSAgICB7Ci0JCSAgICAgIGZpbGVfc2l6ZV9oaW50ID0g ZW5kcG9zOwotCiAJCSAgICAgIC8qIFNocmluayB0aGUgZmlsZSdzIGhlYWQgaWYgdGhlIGZp bGUgc2hyYW5rIHRvCiAJCQkgYmUgc21hbGxlciB0aGFuIGl0cyBoZWFkLiAgKi8KLQkJICAg ICAgaWYgKGVuZHBvcyA8IHNhbWVfYXRfc3RhcnRfcG9zKQotCQkJewotCQkJICBzYW1lX2F0 X3N0YXJ0X3BvcyA9IGVuZHBvczsKLQkJCSAgc2FtZV9hdF9zdGFydCA9IGVuZHBvcyAtIGJl Z19vZmZzZXQgKyBCRUdWX0JZVEU7Ci0JCQl9CisJCSAgICAgIG9mZl90IG9mZnNldF9mcm9t X2JlZyA9IGVuZHBvcyAtIGJlZ19vZmZzZXQ7CisJCSAgICAgIGlmIChvZmZzZXRfZnJvbV9i ZWcgPCBzYW1lX2F0X3N0YXJ0IC0gQkVHVl9CWVRFKQorCQkJc2FtZV9hdF9zdGFydCA9IG1h eCAoMCwgb2Zmc2V0X2Zyb21fYmVnKSArIEJFR1ZfQllURTsKIAkJICAgIH0KIAkJfQogCSAg ICB9CkBAIC00NTQxLDM1ICs0NTU2LDMwIEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVu dHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAg ICAgIHdoaWxlICghZ2l2ZXVwX21hdGNoX2VuZCkKIAl7CiAJICBwdHJkaWZmX3QgbnJlYWQs IGJ1ZnBvcywgdHJpYWw7Ci0JICBvZmZfdCBjdXJwb3M7Ci0KLQkgIC8qIEF0IHdoYXQgZmls ZSBwb3NpdGlvbiBhcmUgd2Ugbm93IHNjYW5uaW5nPyAgKi8KLQkgIGN1cnBvcyA9IGVuZHBv cyAtIChaVl9CWVRFIC0gc2FtZV9hdF9lbmQpOwogCiAJICAvKiBIb3cgbXVjaCBjYW4gd2Ug c2NhbiBpbiB0aGUgbmV4dCBzdGVwPyAgQ29tcGFyZSB3aXRoIHBvc2xpbQogCSAgICAgdG8g cHJldmVudCBvdmVybGFwIG9mIHRoZSBtYXRjaGluZyBoZWFkIHdpdGggdGhlIG1hdGNoaW5n IHRhaWwuCiAJICAgICBUaGUgJ3NhbWVfYXRfc3RhcnRfcG9zJyBsaW1pdCBwcmV2ZW50cyBv dmVybGFwIGluIHRoZSBidWZmZXIncwotCSAgICAgaGVhZCBhbmQgdGFpbCwgYW5kIHRoZSAn ZW5kcG9zIC0gKHNhbWVfYXRfZW5kIC0gc2FtZV9hdF9zdGFydCknCi0JICAgICBsaW1pdCBw cmV2ZW50cyBvdmVybGFwIGluIHRoZSBpbnNlcnRlZCBmaWxlJ3MgaGVhZCBhbmQgdGFpbC4g ICovCi0JICBvZmZfdCBwb3NsaW0gPSBtYXggKHNhbWVfYXRfc3RhcnRfcG9zLAotCQkJICAg ICAgZW5kcG9zIC0gKHNhbWVfYXRfZW5kIC0gc2FtZV9hdF9zdGFydCkpOworCSAgICAgaGVh ZCBhbmQgdGFpbCwgYW5kIHRoZSAnZmlsZV9vdmVybGFwX3BvcycgbGltaXQgcHJldmVudHMK KwkgICAgIG92ZXJsYXAgaW4gdGhlIGluc2VydGVkIGZpbGUncyBoZWFkIGFuZCB0YWlsLiAg Ki8KKwkgIG9mZl90IHNhbWVfYXRfc3RhcnRfcG9zID0gYmVnX29mZnNldCArIChzYW1lX2F0 X3N0YXJ0IC0gQkVHVl9CWVRFKTsKKwkgIG9mZl90IGZpbGVfb3ZlcmxhcF9wb3MgPSBlbmRw b3MgLSAoc2FtZV9hdF9lbmQgLSBzYW1lX2F0X3N0YXJ0KTsKKwkgIG9mZl90IHBvc2xpbSA9 IG1heCAoc2FtZV9hdF9zdGFydF9wb3MsIGZpbGVfb3ZlcmxhcF9wb3MpOwogCSAgLyogRG8g bm90IHNjYW4gbW9yZSB0aGFuIHNpemVvZiByZWFkX2J1ZiBhdCBhIHRpbWUsIGFuZCBzdG9w CiAJICAgICB0aGUgc2NhbiBpZiBpdCBjYW4gZ28gbm8gbW9yZS4gICovCiAJICB0cmlhbCA9 IG1pbiAoY3VycG9zIC0gcG9zbGltLCBzaXplb2YgcmVhZF9idWYpOwogCSAgaWYgKHRyaWFs ID09IDApCiAJICAgIGJyZWFrOwogCi0JICBjdXJwb3MgPSBlbWFjc19mZF9sc2VlayAoZmQs IGN1cnBvcyAtIHRyaWFsLCBTRUVLX1NFVCk7Ci0JICBpZiAoY3VycG9zIDwgMCkKLQkgICAg cmVwb3J0X2ZpbGVfZXJyb3IgKCJTZXR0aW5nIGZpbGUgcG9zaXRpb24iLCBvcmlnX2ZpbGVu YW1lKTsKKwkgIGN1cnBvcyA9IHhsc2VlayAoZmQsIC10cmlhbCwgU0VFS19DVVIsIG9yaWdf ZmlsZW5hbWUpOwogCiAJICBucmVhZCA9IGVtYWNzX2Z1bGxfcmVhZCAoZmQsIHJlYWRfYnVm LCB0cmlhbCk7CisJICBjdXJwb3MgKz0gbnJlYWQ7CiAJICBpZiAobnJlYWQgPCB0cmlhbCkK IAkgICAgewogCSAgICAgIGlmIChucmVhZCA8IDApCiAJCXJlcG9ydF9maWxlX2Vycm9yICgi UmVhZCBlcnJvciIsIG9yaWdfZmlsZW5hbWUpOwogCSAgICAgIC8qIFRoZSBmaWxlIHVuZXhw ZWN0ZWRseSBzaHJhbmsuICAqLwotCSAgICAgIGZpbGVfc2l6ZV9oaW50ID0gY3VycG9zICsg bnJlYWQ7CiAJICAgICAgZ2l2ZXVwX21hdGNoX2VuZCA9IHRydWU7CiAJICAgICAgYnJlYWs7 CiAJICAgIH0KQEAgLTQ2MjMsNiArNDYzMyw3IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29u dGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywK IAkgIC8qIEFycmFuZ2UgdG8gcmVhZCBvbmx5IHRoZSBub25tYXRjaGluZyBtaWRkbGUgcGFy dCBvZiB0aGUgZmlsZS4gICovCiAJICBiZWdfb2Zmc2V0ICs9IHNhbWVfYXRfc3RhcnQgLSBC RUdWX0JZVEU7CiAJICBlbmRfb2Zmc2V0ID0gZW5kcG9zIC0gKFpWX0JZVEUgLSBzYW1lX2F0 X2VuZCk7CisJICBlYXNzZXJ0IChiZWdfb2Zmc2V0IDw9IGVuZF9vZmZzZXQpOwogCiAgICAg ICAgICAgaWYgKCFOSUxQICh2aXNpdCkgJiYgQkVHID09IEJFR1YgJiYgWiA9PSBaVikKICAg ICAgICAgICAgIC8qIFRoaXMgYmluZGluZyBpcyB0byBhdm9pZCBhc2stdXNlci1hYm91dC1z dXBlcnNlc3Npb24tdGhyZWF0CkBAIC00NjgxLDI2ICs0NjkyLDM0IEBAIERFRlVOICgiaW5z ZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmls ZV9jb250ZW50cywKICAgICAgIC8qIEZpcnN0IHJlYWQgdGhlIHdob2xlIGZpbGUsIHBlcmZv cm1pbmcgY29kZSBjb252ZXJzaW9uIGludG8KIAkgQ09OVkVSU0lPTl9CVUZGRVIuICAqLwog Ci0gICAgICBpZiAoZW1hY3NfZmRfbHNlZWsgKGZkLCBiZWdfb2Zmc2V0LCBTRUVLX1NFVCkg PCAwKQotCXJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBmaWxlIHBvc2l0aW9uIiwgb3Jp Z19maWxlbmFtZSk7CisgICAgICBpZiAoYmVnX29mZnNldCAhPSBjdXJwb3MpCisJeworCSAg aWYgKCFOSUxQIChiZWcpIHx8IDAgPD0gY3VycG9zKQorCSAgICBjdXJwb3MgPSB4bHNlZWsg KGZkLCBiZWdfb2Zmc2V0LCBTRUVLX1NFVCwgb3JpZ19maWxlbmFtZSk7CisJICBlbHNlCisJ ICAgIHsKKwkgICAgICBiZWdfb2Zmc2V0ID0gY3VycG9zID0geGxzZWVrIChmZCwgMCwgU0VF S19DVVIsIG9yaWdfZmlsZW5hbWUpOworCSAgICAgIGVuZF9vZmZzZXQgPSBtYXggKGVuZF9v ZmZzZXQsIGJlZ19vZmZzZXQpOworCSAgICB9CisJfQogCiAgICAgICBpbnNlcnRlZCA9IDA7 CQkvKiBCeXRlcyBwdXQgaW50byBDT05WRVJTSU9OX0JVRkZFUiBzbyBmYXIuICAqLwogICAg ICAgdW5wcm9jZXNzZWQgPSAwOwkJLyogQnl0ZXMgbm90IHByb2Nlc3NlZCBpbiBwcmV2aW91 cyBsb29wLiAgKi8KLSAgICAgIGZpbGVfc2l6ZV9oaW50ID0gYmVnX29mZnNldDsKIAogICAg ICAgd2hpbGUgKHRydWUpCiAJewogCSAgLyogUmVhZCBvbmUgYnVmZmVyIGEgdGltZSwgdG8g YWxsb3cKIAkgICAgIHF1aXR0aW5nIHdoaWxlIHJlYWRpbmcgYSBodWdlIGZpbGUuICAqLwog Ci0JICBwdHJkaWZmX3QgdHJpYWwgPSBzaXplb2YgcmVhZF9idWYgLSB1bnByb2Nlc3NlZDsK LQkgIHRoaXMgPSBlbWFjc19mdWxsX3JlYWQgKGZkLCByZWFkX2J1ZiArIHVucHJvY2Vzc2Vk LCB0cmlhbCk7CisJICBwdHJkaWZmX3QgdHJpYWwgPSBtaW4gKGVuZF9vZmZzZXQgLSBjdXJw b3MsCisJCQkJIHNpemVvZiByZWFkX2J1ZiAtIHVucHJvY2Vzc2VkKTsKKwkgIHRoaXMgPSB0 cmlhbCA/IGVtYWNzX2ZkX3JlYWQgKGZkLCByZWFkX2J1ZiArIHVucHJvY2Vzc2VkLCB0cmlh bCkgOiAwOwogCSAgaWYgKHRoaXMgPCAwKQogCSAgICByZXBvcnRfZmlsZV9lcnJvciAoIlJl YWQgZXJyb3IiLCBvcmlnX2ZpbGVuYW1lKTsKIAkgIGlmICh0aGlzID09IDApCiAJICAgIGJy ZWFrOworCSAgY3VycG9zICs9IHRoaXM7CiAKLQkgIGZpbGVfc2l6ZV9oaW50ICs9IHRoaXM7 CiAJICBCVUZfVEVNUF9TRVRfUFQgKFhCVUZGRVIgKGNvbnZlcnNpb25fYnVmZmVyKSwKIAkJ CSAgIEJVRl9aIChYQlVGRkVSIChjb252ZXJzaW9uX2J1ZmZlcikpKTsKIAkgIGRlY29kZV9j b2RpbmdfY19zdHJpbmcgKCZjb2RpbmcsICh1bnNpZ25lZCBjaGFyICopIHJlYWRfYnVmLApA QCAtNDcwOCw4ICs0NzI3LDYgQEAgREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZp bnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLAogCSAgdW5wcm9j ZXNzZWQgPSBjb2RpbmcuY2FycnlvdmVyX2J5dGVzOwogCSAgaWYgKGNvZGluZy5jYXJyeW92 ZXJfYnl0ZXMgPiAwKQogCSAgICBtZW1jcHkgKHJlYWRfYnVmLCBjb2RpbmcuY2FycnlvdmVy LCB1bnByb2Nlc3NlZCk7Ci0JICBpZiAodGhpcyA8IHRyaWFsKQotCSAgICBicmVhazsKIAl9 CiAKICAgICAgIGVtYWNzX2ZkX2Nsb3NlIChmZCk7CkBAIC00ODM3LDYgKzQ4NTQsMjAgQEAg REVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywg U2luc2VydF9maWxlX2NvbnRlbnRzLAogICAgICAgZ290byBoYW5kbGVkOwogICAgIH0KIAor ICBpZiAoYmVnX29mZnNldCAhPSBjdXJwb3MpCisgICAgeworICAgICAgaWYgKCFOSUxQIChi ZWcpIHx8IDAgPD0gY3VycG9zKQorCXhsc2VlayAoZmQsIGJlZ19vZmZzZXQsIFNFRUtfU0VU LCBvcmlnX2ZpbGVuYW1lKTsKKyAgICAgIGVsc2UgaWYgKGVuZF9vZmZzZXQgIT0gVFlQRV9N QVhJTVVNIChvZmZfdCkpCisJeworCSAgY3VycG9zID0gZW1hY3NfZmRfbHNlZWsgKGZkLCAw LCBTRUVLX0NVUik7CisJICBiZWdfb2Zmc2V0ID0gbWF4ICgwLCBjdXJwb3MpOworCSAgZW5k X29mZnNldCA9IG1heCAoZW5kX29mZnNldCwgYmVnX29mZnNldCk7CisJfQorICAgIH0KKyAg LyogY3VycG9zIGVmZmVjdGl2ZWx5IGdvZXMgb3V0IG9mIHNjb3BlIG5vdywgYXMgaXQgaXMg bm8gbG9uZ2VyIG5lZWRlZCwKKyAgICAgc28gZG8gbm90IGJvdGhlciB0byB1cGRhdGUgY3Vy cG9zIGZyb20gbm93IG9uLiAgKi8KKwogICB0b3RhbCA9IGVuZF9vZmZzZXQgLSBiZWdfb2Zm c2V0OwogCiAgIGlmIChOSUxQICh2aXNpdCkgJiYgdG90YWwgPiAwKQpAQCAtNDg2MSw3ICs0 ODkyLDcgQEAgREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9j b250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLAogICAvKiBFbnN1cmUgdGhlIGdhcCBp cyBhdCBsZWFzdCBvbmUgYnl0ZSBsYXJnZXIgdGhhbiBuZWVkZWQgZm9yIHRoZQogICAgICBl c3RpbWF0ZWQgaW5zZXJ0aW9uLCBzbyB0aGF0IGluIHRoZSB1c3VhbCBjYXNlIHdlIHJlYWQK ICAgICAgd2l0aG91dCByZWFsbG9jYXRpbmcuICAqLwotICBvZmZfdCBpbnNlcnRlZF9lc3Rp bWF0ZSA9IG1pbiAoZW5kX29mZnNldCwgZmlsZV9zaXplX2hpbnQpIC0gYmVnX29mZnNldDsK KyAgb2ZmX3QgaW5zZXJ0ZWRfZXN0aW1hdGUgPSBsaWtlbHlfZW5kIC0gYmVnX29mZnNldDsK ICAgaWYgKEdBUF9TSVpFIDw9IGluc2VydGVkX2VzdGltYXRlKQogICAgIHsKICAgICAgIHB0 cmRpZmZfdCBncm93dGg7CkBAIC00ODcwLDEzICs0OTAxLDYgQEAgREVGVU4gKCJpbnNlcnQt ZmlsZS1jb250ZW50cyIsIEZpbnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2Nv bnRlbnRzLAogICAgICAgbWFrZV9nYXAgKGdyb3d0aCk7CiAgICAgfQogCi0gIGlmIChiZWdf b2Zmc2V0ICE9IDAgfHwgKCFOSUxQIChyZXBsYWNlKQotCQkJICAmJiAhQkFTRV9FUSAocmVw bGFjZSwgUXVuYm91bmQpKSkKLSAgICB7Ci0gICAgICBpZiAoZW1hY3NfZmRfbHNlZWsgKGZk LCBiZWdfb2Zmc2V0LCBTRUVLX1NFVCkgPCAwKQotCXJlcG9ydF9maWxlX2Vycm9yICgiU2V0 dGluZyBmaWxlIHBvc2l0aW9uIiwgb3JpZ19maWxlbmFtZSk7Ci0gICAgfQotCiAgIC8qIFRv dGFsIGJ5dGVzIGluc2VydGVkLiAgKi8KICAgaW5zZXJ0ZWQgPSAwOwogCkBAIC00ODk3LDE5 ICs0OTIxLDIxIEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMiLCBGaW5zZXJ0X2Zp bGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKIAllbHNlCiAJICB7CiAJICAg IGJ1ZiA9IChjaGFyICopIEJFR19BRERSICsgUFRfQllURSAtIEJFR19CWVRFICsgaW5zZXJ0 ZWQ7Ci0JICAgIGJ1ZnNpemUgPSBtaW4gKGdhcF9zaXplLCBJT19CVUZTSVpFKTsKKwkgICAg YnVmc2l6ZSA9IG1pbiAoZ2FwX3NpemUsIElOU0VSVF9SRUFEX1NJWkVfTUFYKTsKIAkgIH0K IAlidWZzaXplID0gbWluIChidWZzaXplLCB0b3RhbCAtIGluc2VydGVkKTsKIAotCWlmICgh c2Vla2FibGUgJiYgZW5kX29mZnNldCA9PSBUWVBFX01BWElNVU0gKG9mZl90KSkKKwlpZiAo IXJlZ3VsYXIpCiAJICB7CiAJICAgIExpc3BfT2JqZWN0IG5ieXRlczsKIAkgICAgaW50bWF4 X3QgbnVtYmVyOwogCiAJICAgIC8qIFJlYWQgZnJvbSB0aGUgZmlsZSwgY2FwdHVyaW5nIGBx dWl0Jy4gIFdoZW4gYW4KIAkgICAgICAgZXJyb3Igb2NjdXJzLCBlbmQgdGhlIGxvb3AsIGFu ZCBhcnJhbmdlIGZvciBhIHF1aXQKLQkgICAgICAgdG8gYmUgc2lnbmFsZWQgYWZ0ZXIgZGVj b2RpbmcgdGhlIHRleHQgd2UgcmVhZC4gICovCi0JICAgIHVuaW9uIHJlYWRfbm9uX3JlZ3Vs YXIgZGF0YSA9IHt7ZmQsIGJ1ZiwgYnVmc2l6ZX19OworCSAgICAgICB0byBiZSBzaWduYWxl ZCBhZnRlciBkZWNvZGluZyB0aGUgdGV4dCB3ZSByZWFkLgorCSAgICAgICBUaGlzIHdheSwg d2UgZG8gbm90IGxvc2UgYW55IGRhdGEgcmVhZC4gICovCisJICAgIHVuaW9uIHJlYWRfbm9u X3JlZ3VsYXIgZGF0YQorCSAgICAgID0ge3tmZCwgYnVmID09IHJlYWRfYnVmID8gYnVmIDog TlVMTCwgaW5zZXJ0ZWQsIGJ1ZnNpemV9fTsKIAkgICAgbmJ5dGVzID0gaW50ZXJuYWxfY29u ZGl0aW9uX2Nhc2VfMQogCSAgICAgIChyZWFkX25vbl9yZWd1bGFyLCBtYWtlX3BvaW50ZXJf aW50ZWdlciAoJmRhdGEpLAogCSAgICAgICBRZXJyb3IsIHJlYWRfbm9uX3JlZ3VsYXJfcXVp dCk7CkBAIC00OTI2LDcgKzQ5NTIsOCBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRz IiwgRmluc2VydF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAJZWxz ZQogCSAgLyogQWxsb3cgcXVpdHRpbmcgb3V0IG9mIHRoZSBhY3R1YWwgSS9PLiAgV2UgZG9u J3QgbWFrZSB0ZXh0CiAJICAgICBwYXJ0IG9mIHRoZSBidWZmZXIgdW50aWwgYWxsIHRoZSBy ZWFkaW5nIGlzIGRvbmUsIHNvIGEKLQkgICAgIEMtZyBoZXJlIGRvZXNuJ3QgZG8gYW55IGhh cm0uICAqLworCSAgICAgQy1nIGhlcmUgZG9lc24ndCBkbyBhbnkgaGFybTogdGhvdWdoIHRo ZSBkYXRhIHJlYWQgYXJlIGRpc2NhcmRlZCwKKwkgICAgIHRoZSBvcmlnaW5hbCBkYXRhIGlz IHN0aWxsIGluIHRoZSBpbnB1dCBmaWxlLiAgKi8KIAkgIHsKIAkgICAgdGhpcyA9IGVtYWNz X2ZkX3JlYWQgKGZkLCBidWYsIGJ1ZnNpemUpOwogCSAgICBpZiAodGhpcyA8IDApCkBAIC00 OTU4LDggKzQ5ODUsNiBAQCBERUZVTiAoImluc2VydC1maWxlLWNvbnRlbnRzIiwgRmluc2Vy dF9maWxlX2NvbnRlbnRzLCBTaW5zZXJ0X2ZpbGVfY29udGVudHMsCiAgICAgICB9CiAgIH0K IAotICBmaWxlX3NpemVfaGludCA9IGJlZ19vZmZzZXQgKyBpbnNlcnRlZDsKLQogICAvKiBO b3cgd2UgaGF2ZSBlaXRoZXIgcmVhZCBhbGwgdGhlIGZpbGUgZGF0YSBpbnRvIHRoZSBnYXAs CiAgICAgIG9yIHN0b3AgcmVhZGluZyBvbiBJL08gZXJyb3Igb3IgcXVpdC4gIElmIG5vdGhp bmcgd2FzCiAgICAgIHJlYWQsIHVuZG8gbWFya2luZyB0aGUgYnVmZmVyIG1vZGlmaWVkLiAg Ki8KQEAgLTUxMTksNyArNTE0NCw3IEBAIERFRlVOICgiaW5zZXJ0LWZpbGUtY29udGVudHMi LCBGaW5zZXJ0X2ZpbGVfY29udGVudHMsIFNpbnNlcnRfZmlsZV9jb250ZW50cywKICAgICAg IGlmIChOSUxQIChoYW5kbGVyKSkKIAl7CiAJICBjdXJyZW50X2J1ZmZlci0+bW9kdGltZSA9 IG10aW1lOwotCSAgY3VycmVudF9idWZmZXItPm1vZHRpbWVfc2l6ZSA9IGZpbGVfc2l6ZV9o aW50OworCSAgY3VycmVudF9idWZmZXItPm1vZHRpbWVfc2l6ZSA9IHN0X3NpemU7CiAJICBi c2V0X2ZpbGVuYW1lIChjdXJyZW50X2J1ZmZlciwgb3JpZ19maWxlbmFtZSk7CiAJfQogCkBA IC01NjM0LDcgKzU2NTksNyBAQCB3cml0ZV9yZWdpb24gKExpc3BfT2JqZWN0IHN0YXJ0LCBM aXNwX09iamVjdCBlbmQsIExpc3BfT2JqZWN0IGZpbGVuYW1lLAogCSAgaW50IGxzZWVrX2Vy cm5vID0gZXJybm87CiAJICBpZiAoZmlsZV9sb2NrZWQpCiAJICAgIEZ1bmxvY2tfZmlsZSAo bG9ja25hbWUpOwotCSAgcmVwb3J0X2ZpbGVfZXJybm8gKCJMc2VlayBlcnJvciIsIGZpbGVu YW1lLCBsc2Vla19lcnJubyk7CisJICByZXBvcnRfZmlsZV9lcnJubyAoIlNldHRpbmcgZmls ZSBwb3NpdGlvbiIsIGZpbGVuYW1lLCBsc2Vla19lcnJubyk7CiAJfQogICAgIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggNjA1MjU1ZGZhYWEuLmI4 OWE0NjQ3NzI1IDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAg LTUyOTcsNiArNTI5NywxNyBAQCBtYXliZV9kaXNhYmxlX2FkZHJlc3NfcmFuZG9taXphdGlv biAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICByZXR1cm4gYXJnYzsKIH0KICNlbmRpZgor LyogTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBvciB3cml0ZSBpbiBhIHNpbmds ZSBzeXN0ZW0gY2FsbC4KKyAgIFRoaXMgd29ya3MgYXJvdW5kIGEgc2VyaW91cyBidWcgaW4g TGludXgga2VybmVscyBiZWZvcmUgMi42LjE2OyBzZWUKKyAgIDxodHRwczovL2J1Z3ppbGxh LnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2Zvcm1hdD1tdWx0aXBsZSZpZD02MTI4Mzk+Cisg ICBhbmQgc2VlIExpbnV4IGtlcm5lbCBjb21taXQgZTI4Y2M3MTU3MmRhMzhhNWExMmMxY2Zl NGQ3MDMyMDE3YWRjY2Y2OS4KKyAgIEl0J3MgbGlrZWx5IHRvIHdvcmsgYXJvdW5kIHNpbWls YXIgYnVncyBpbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywgc28gZG8gaXQKKyAgIG9uIGFs bCBwbGF0Zm9ybXMuICBSb3VuZCBJTlRfTUFYIGRvd24gdG8gYSBwYWdlIHNpemUsIHdpdGgg dGhlIGNvbnNlcnZhdGl2ZQorICAgYXNzdW1wdGlvbiB0aGF0IHBhZ2Ugc2l6ZXMgYXJlIGF0 IG1vc3QgMioqMTggYnl0ZXMgKGFueSBrZXJuZWwgd2l0aCBhCisgICBwYWdlIHNpemUgbGFy Z2VyIHRoYW4gdGhhdCBzaG91bGRuJ3QgaGF2ZSB0aGUgYnVnKS4gICovCisjaWZuZGVmIE1B WF9SV19DT1VOVAorIyBkZWZpbmUgTUFYX1JXX0NPVU5UIChJTlRfTUFYID4+IDE4IDw8IDE4 KQorI2VuZGlmCiBleHRlcm4gaW50IGVtYWNzX2V4ZWNfZmlsZSAoY2hhciBjb25zdCAqLCBj aGFyICpjb25zdCAqLCBjaGFyICpjb25zdCAqKTsKIGV4dGVybiB2b2lkIGluaXRfc3RhbmRh cmRfZmRzICh2b2lkKTsKIGV4dGVybiBjaGFyICplbWFjc19nZXRfY3VycmVudF9kaXJfbmFt ZSAodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvcGR1bXBlci5jIGIvc3JjL3BkdW1wZXIuYwpp bmRleCBiM2RlOTBiZmEwMy4uYzAyODA4YTRlMzIgMTAwNjQ0Ci0tLSBhL3NyYy9wZHVtcGVy LmMKKysrIGIvc3JjL3BkdW1wZXIuYwpAQCAtNTM0NiwxMCArNTM0Niw3IEBAIGR1bXBfcmVh ZF9hbGwgKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgYnl0ZXNfdG9fcmVhZCkKICAgc2l6 ZV90IGJ5dGVzX3JlYWQgPSAwOwogICB3aGlsZSAoYnl0ZXNfcmVhZCA8IGJ5dGVzX3RvX3Jl YWQpCiAgICAgewotICAgICAgLyogU29tZSBwbGF0Zm9ybXMgYWNjZXB0IG9ubHkgaW50LXNp emVkIHZhbHVlcyB0byByZWFkLgotICAgICAgICAgUm91bmQgdGhpcyBkb3duIHRvIGEgcGFn ZSBzaXplIChzZWUgTUFYX1JXX0NPVU5UIGluIHN5c2RlcC5jKS4gICovCi0gICAgICBpbnQg bWF4X3J3X2NvdW50ID0gSU5UX01BWCA+PiAxOCA8PCAxODsKLSAgICAgIGludCBjaHVua190 b19yZWFkID0gbWluIChieXRlc190b19yZWFkIC0gYnl0ZXNfcmVhZCwgbWF4X3J3X2NvdW50 KTsKKyAgICAgIGludCBjaHVua190b19yZWFkID0gbWluIChieXRlc190b19yZWFkIC0gYnl0 ZXNfcmVhZCwgTUFYX1JXX0NPVU5UKTsKICAgICAgIHNzaXplX3QgY2h1bmsgPSByZWFkIChm ZCwgKGNoYXIgKikgYnVmICsgYnl0ZXNfcmVhZCwgY2h1bmtfdG9fcmVhZCk7CiAgICAgICBp ZiAoY2h1bmsgPCAwKQogICAgICAgICByZXR1cm4gY2h1bms7CmRpZmYgLS1naXQgYS9zcmMv c3lzZGVwLmMgYi9zcmMvc3lzZGVwLmMKaW5kZXggZmVlMDY4ZDU0MWYuLmQwMWNjYTE0MzVk IDEwMDY0NAotLS0gYS9zcmMvc3lzZGVwLmMKKysrIGIvc3JjL3N5c2RlcC5jCkBAIC0yNzE0 LDE3ICsyNzE0LDYgQEAgZW1hY3NfZmNobW9kYXQgKGludCBmZCwgY29uc3QgY2hhciAqcGF0 aCwgbW9kZV90IG1vZGUsIGludCBmbGFncykKICNlbmRpZiAvKiAhKGRlZmluZWQgSEFWRV9B TkRST0lEICYmICFkZWZpbmVkIEFORFJPSURfU1RVQklGWSkgKi8KIH0KIAotLyogTWF4aW11 bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBvciB3cml0ZSBpbiBhIHNpbmdsZSBzeXN0ZW0g Y2FsbC4KLSAgIFRoaXMgd29ya3MgYXJvdW5kIGEgc2VyaW91cyBidWcgaW4gTGludXgga2Vy bmVscyBiZWZvcmUgMi42LjE2OyBzZWUKLSAgIDxodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2Zvcm1hdD1tdWx0aXBsZSZpZD02MTI4Mzk+LgotICAgSXQncyBs aWtlbHkgdG8gd29yayBhcm91bmQgc2ltaWxhciBidWdzIGluIG90aGVyIG9wZXJhdGluZyBz eXN0ZW1zLCBzbyBkbyBpdAotICAgb24gYWxsIHBsYXRmb3Jtcy4gIFJvdW5kIElOVF9NQVgg ZG93biB0byBhIHBhZ2Ugc2l6ZSwgd2l0aCB0aGUgY29uc2VydmF0aXZlCi0gICBhc3N1bXB0 aW9uIHRoYXQgcGFnZSBzaXplcyBhcmUgYXQgbW9zdCAyKioxOCBieXRlcyAoYW55IGtlcm5l bCB3aXRoIGEKLSAgIHBhZ2Ugc2l6ZSBsYXJnZXIgdGhhbiB0aGF0IHNob3VsZG4ndCBoYXZl IHRoZSBidWcpLiAgKi8KLSNpZm5kZWYgTUFYX1JXX0NPVU5UCi0jZGVmaW5lIE1BWF9SV19D T1VOVCAoSU5UX01BWCA+PiAxOCA8PCAxOCkKLSNlbmRpZgotCiAvKiBWZXJpZnkgdGhhdCBN QVhfUldfQ09VTlQgZml0cyBpbiB0aGUgcmVsZXZhbnQgc3RhbmRhcmQgdHlwZXMuICAqLwog I2lmbmRlZiBTU0laRV9NQVgKICMgZGVmaW5lIFNTSVpFX01BWCBUWVBFX01BWElNVU0gKHNz aXplX3QpCg== --------------7IT646j308hj7xBAp8lVoLdy--