Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:64195 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 44078 invoked from network); 7 Dec 2012 19:54:50 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 Dec 2012 19:54:50 -0000 Authentication-Results: pb1.pair.com header.from=njaguar@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=njaguar@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.170 as permitted sender) X-PHP-List-Original-Sender: njaguar@gmail.com X-Host-Fingerprint: 209.85.214.170 mail-ob0-f170.google.com Received: from [209.85.214.170] ([209.85.214.170:40732] helo=mail-ob0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id EC/B7-14797-98942C05 for ; Fri, 07 Dec 2012 14:54:50 -0500 Received: by mail-ob0-f170.google.com with SMTP id wp18so820331obc.29 for ; Fri, 07 Dec 2012 11:54:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=GH2hvx2bcXyKeNGngr0DfW8xy7ojCi2JrZ8VSuh0KLI=; b=XPaE0KGqtmAhYxfndj9CEVgSbZCBXVzQ1o9j+zQc+zjnWndHNdgTUuZLHgGULlgOjC +vRWE3yTtWfnaNvTDCMuicsui3+fybPMnh/0FDDGN9KU9oiqfONF48Ha1Hk7GRiuhqwh nlKboFE0nGBgK/MGbASdVpwCfrRuVsxwgn4KXwL17j02wVb1mO2sS8VKil2lK8GYcQyS Wg7/BUvErInz+sEMA5YwzLsFxomYi2s9YJUos6bGbHKN7B9ygvqobL2JZ/pjD0OgTy2y X3TQyW/2FS//vbMTew9yKnAjX75dH+yybtHrFlRZIHl+H47+U21fU4DOrZ/pTlJbc0Xc kPOQ== MIME-Version: 1.0 Received: by 10.182.245.20 with SMTP id xk20mr3811665obc.89.1354910086935; Fri, 07 Dec 2012 11:54:46 -0800 (PST) Received: by 10.182.89.66 with HTTP; Fri, 7 Dec 2012 11:54:46 -0800 (PST) Date: Fri, 7 Dec 2012 13:54:46 -0600 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=14dae93b608e6f364c04d0489695 Subject: Re: [PATCH] (v 5.4.11-dev) ext/date/php_date.c cleanup From: njaguar@gmail.com (Paul Taulborg) --14dae93b608e6f364c04d0489695 Content-Type: text/plain; charset=ISO-8859-1 Sorry for the double message, still getting used to doing patches instead of applying changes directly. I accidentally attached an old patch file, not the latest. The previous had a bug in php_date_initialize() which I caught in my testing (I left the local variable tzi, by mistake, instead of using now->tz_info), but didn't regenerate the patch file. Caught up upon reviewing the patch itself and realizing it was the old one. :-/ Attached is the proper patch, thanks. --14dae93b608e6f364c04d0489695 Content-Type: text/plain; charset=UTF-8; name="php_date_c_cleanups_patch.txt" Content-Disposition: attachment; filename="php_date_c_cleanups_patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hafqeyzz0 ZGlmZiAtLWdpdCBhL2V4dC9kYXRlL3BocF9kYXRlLmMgYi9leHQvZGF0ZS9waHBfZGF0ZS5jCmlu ZGV4IGI1ODgyMjcuLmMxYzUzY2YgMTAwNjQ0Ci0tLSBhL2V4dC9kYXRlL3BocF9kYXRlLmMKKysr IGIvZXh0L2RhdGUvcGhwX2RhdGUuYwpAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyB6ZW5kX29i amVjdF9oYW5kbGVycyBkYXRlX29iamVjdF9oYW5kbGVyc19wZXJpb2Q7CiAjZGVmaW5lIERBVEVf U0VUX0NPTlRFWFQgXAogCXp2YWwgKm9iamVjdDsgXAogCW9iamVjdCA9IGdldFRoaXMoKTsgXAot ICAgCisKICNkZWZpbmUgREFURV9GRVRDSF9PQkpFQ1QJXAogCXBocF9kYXRlX29iaiAqb2JqOwlc CiAJREFURV9TRVRfQ09OVEVYVDsgXApAQCAtNjg4LDcgKzY4OCw3IEBAIFBIUF9SU0hVVERPV05f RlVOQ1RJT04oZGF0ZSkKICAqIFJGQzI4MjIsIFNlY3Rpb24gMy4zOiBodHRwOi8vd3d3LmlldGYu b3JnL3JmYy9yZmMyODIyLnR4dAogICogIEZXUyAgICAgICAgICAgICA9ICAgICAgIChbKldTUCBD UkxGXSAxKldTUCkgLyAgIDsgRm9sZGluZyB3aGl0ZSBzcGFjZQogICogIENGV1MgICAgICAgICAg ICA9ICAgICAgICooW0ZXU10gY29tbWVudCkgKChbRldTXSBjb21tZW50KSAvIEZXUykKLSAqICAK KyAqCiAgKiAgZGF0ZS10aW1lICAgICAgID0gICAgICAgWyBkYXktb2Ytd2VlayAiLCIgXSBkYXRl IEZXUyB0aW1lIFtDRldTXQogICogIGRheS1vZi13ZWVrICAgICA9ICAgICAgIChbRldTXSBkYXkt bmFtZSkKICAqICBkYXktbmFtZSAgICAgICAgPSAgICAgICAiTW9uIiAvICJUdWUiIC8gIldlZCIg LyAiVGh1IiAvICJGcmkiIC8gIlNhdCIgLyAiU3VuIgpAQCAtNzEwLDE5ICs3MTAsMTkgQEAgUEhQ X1JTSFVURE9XTl9GVU5DVElPTihkYXRlKQogICogIGRhdGUtZnVsbHllYXIgICA9IDRESUdJVAog ICogIGRhdGUtbW9udGggICAgICA9IDJESUdJVCAgOyAwMS0xMgogICogIGRhdGUtbWRheSAgICAg ICA9IDJESUdJVCAgOyAwMS0yOCwgMDEtMjksIDAxLTMwLCAwMS0zMSBiYXNlZCBvbiBtb250aC95 ZWFyCi0gKiAgCisgKgogICogIHRpbWUtaG91ciAgICAgICA9IDJESUdJVCAgOyAwMC0yMwogICog IHRpbWUtbWludXRlICAgICA9IDJESUdJVCAgOyAwMC01OQogICogIHRpbWUtc2Vjb25kICAgICA9 IDJESUdJVCAgOyAwMC01OCwgMDAtNTksIDAwLTYwIGJhc2VkIG9uIGxlYXAgc2Vjb25kIHJ1bGVz Ci0gKiAgCisgKgogICogIHRpbWUtc2VjZnJhYyAgICA9ICIuIiAxKkRJR0lUCiAgKiAgdGltZS1u dW1vZmZzZXQgID0gKCIrIiAvICItIikgdGltZS1ob3VyICI6IiB0aW1lLW1pbnV0ZQogICogIHRp bWUtb2Zmc2V0ICAgICA9ICJaIiAvIHRpbWUtbnVtb2Zmc2V0Ci0gKiAgCisgKgogICogIHBhcnRp YWwtdGltZSAgICA9IHRpbWUtaG91ciAiOiIgdGltZS1taW51dGUgIjoiIHRpbWUtc2Vjb25kIFt0 aW1lLXNlY2ZyYWNdCiAgKiAgZnVsbC1kYXRlICAgICAgID0gZGF0ZS1mdWxseWVhciAiLSIgZGF0 ZS1tb250aCAiLSIgZGF0ZS1tZGF5CiAgKiAgZnVsbC10aW1lICAgICAgID0gcGFydGlhbC10aW1l IHRpbWUtb2Zmc2V0Ci0gKiAgCisgKgogICogIGRhdGUtdGltZSAgICAgICA9IGZ1bGwtZGF0ZSAi VCIgZnVsbC10aW1lCiAgKi8KICNkZWZpbmUgREFURV9GT1JNQVRfUkZDMzMzOSAgIlktbS1kXFxU SDppOnNQIgpAQCAtODA0LDcgKzgwNCw3IEBAIFBIUF9NU0hVVERPV05fRlVOQ1RJT04oZGF0ZSkK IFBIUF9NSU5GT19GVU5DVElPTihkYXRlKQogewogCWNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYiA9 IERBVEVfVElNRVpPTkVEQjsKLQkKKwogCXBocF9pbmZvX3ByaW50X3RhYmxlX3N0YXJ0KCk7CiAJ cGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJkYXRlL3RpbWUgc3VwcG9ydCIsICJlbmFibGVk Iik7CiAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJcIk9sc29uXCIgVGltZXpvbmUgRGF0 YWJhc2UgVmVyc2lvbiIsIHR6ZGItPnZlcnNpb24pOwpAQCAtODU1LDcgKzg1NSw3IEBAIHN0YXRp YyBjaGFyKiBndWVzc190aW1lem9uZShjb25zdCB0aW1lbGliX3R6ZGIgKnR6ZGIgVFNSTUxTX0RD KQogCWlmICghREFURUcoZGVmYXVsdF90aW1lem9uZSkpIHsKIAkJLyogU3BlY2lhbCBjYXNlOiBl eHQvZGF0ZSB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0ICovCiAJCXp2YWwgenR6OwotCQkKKwogCQlp ZiAoU1VDQ0VTUyA9PSB6ZW5kX2dldF9jb25maWd1cmF0aW9uX2RpcmVjdGl2ZSgiZGF0ZS50aW1l em9uZSIsIHNpemVvZigiZGF0ZS50aW1lem9uZSIpLCAmenR6KSAmJgogCQkgICAgWl9UWVBFKHp0 eikgPT0gSVNfU1RSSU5HICYmCiAJCSAgICBaX1NUUkxFTih6dHopID4gMCAmJgpAQCAtOTM2LDgg KzkzNiw4IEBAIGNoYXIgKnBocF9kYXRlX3Nob3J0X2RheV9uYW1lKHRpbWVsaWJfc2xsIHksIHRp bWVsaWJfc2xsIG0sIHRpbWVsaWJfc2xsIGQpCiAJdGltZWxpYl9zbGwgZGF5X29mX3dlZWsgPSB0 aW1lbGliX2RheV9vZl93ZWVrKHksIG0sIGQpOwogCWlmIChkYXlfb2Zfd2VlayA8IDApIHsKIAkJ cmV0dXJuICJVbmtub3duIjsKLQl9IAotCXJldHVybiBkYXlfc2hvcnRfbmFtZXNbZGF5X29mX3dl ZWtdOwkKKwl9CisJcmV0dXJuIGRheV9zaG9ydF9uYW1lc1tkYXlfb2Zfd2Vla107CiB9CiAvKiB9 fX0gKi8KIApAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFy ICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJdGlt ZWxpYl90aW1lX29mZnNldCAqb2Zmc2V0ID0gTlVMTDsKIAl0aW1lbGliX3NsbCAgICAgICAgICBp c293ZWVrLCBpc295ZWFyOwogCWludCAgICAgICAgICAgICAgICAgIHJmY19jb2xvbjsKLQlpbnQg ICAgICAgICAgICAgICAgICB3ZWVrWWVhclNldCA9IDA7CisJaW50ICAgICAgICAgICAgICAgICAg d2Vla195ZWFyX3NldCA9IDA7CiAKIAlpZiAoIWZvcm1hdF9sZW4pIHsKIAkJcmV0dXJuIGVzdHJk dXAoIiIpOwpAQCAtOTY5LDcgKzk2OSw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFy ICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJCQlv ZmZzZXQtPmxlYXBfc2VjcyA9IDA7CiAJCQlvZmZzZXQtPmlzX2RzdCA9IDA7CiAJCQlvZmZzZXQt PmFiYnIgPSBtYWxsb2MoOSk7IC8qIEdNVO+/vXh4eHhcMCAqLwotCQkJc25wcmludGYob2Zmc2V0 LT5hYmJyLCA5LCAiR01UJWMlMDJkJTAyZCIsIAorCQkJc25wcmludGYob2Zmc2V0LT5hYmJyLCA5 LCAiR01UJWMlMDJkJTAyZCIsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsdGlt ZSA/ICgob2Zmc2V0LT5vZmZzZXQgPCAwKSA/ICctJyA6ICcrJykgOiAnKycsCiAJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2FsdGltZSA/IGFicyhvZmZzZXQtPm9mZnNldCAvIDM2MDAp IDogMCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWx0aW1lID8gYWJzKChvZmZz ZXQtPm9mZnNldCAlIDM2MDApIC8gNjApIDogMCApOwpAQCAtOTkzLDExICs5OTMsMTcgQEAgc3Rh dGljIGNoYXIgKmRhdGVfZm9ybWF0KGNoYXIgKmZvcm1hdCwgaW50IGZvcm1hdF9sZW4sIHRpbWVs aWJfdGltZSAqdCwgaW50IGxvY2EKIAogCQkJLyogd2VlayAqLwogCQkJY2FzZSAnVyc6Ci0JCQkJ aWYoIXdlZWtZZWFyU2V0KSB7IHRpbWVsaWJfaXNvd2Vla19mcm9tX2RhdGUodC0+eSwgdC0+bSwg dC0+ZCwgJmlzb3dlZWssICZpc295ZWFyKTsgd2Vla1llYXJTZXQgPSAxOyB9Ci0JCQkJbGVuZ3Ro ID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiUwMmQiLCAoaW50KSBpc293ZWVrKTsgYnJlYWs7IC8q IGlzbyB3ZWVrbnIgKi8KIAkJCWNhc2UgJ28nOgotCQkJCWlmKCF3ZWVrWWVhclNldCkgeyB0aW1l bGliX2lzb3dlZWtfZnJvbV9kYXRlKHQtPnksIHQtPm0sIHQtPmQsICZpc293ZWVrLCAmaXNveWVh cik7IHdlZWtZZWFyU2V0ID0gMTsgfQotCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1ZmZlciwgMzIs ICIlZCIsIChpbnQpIGlzb3llYXIpOyBicmVhazsgLyogaXNvIHllYXIgKi8KKwkJCQlpZiAoIXdl ZWtfeWVhcl9zZXQpIHsKKwkJCQkJdGltZWxpYl9pc293ZWVrX2Zyb21fZGF0ZSh0LT55LCB0LT5t LCB0LT5kLCAmaXNvd2VlaywgJmlzb3llYXIpOworCQkJCQl3ZWVrX3llYXJfc2V0ID0gMTsKKwkJ CQl9CisJCQkJaWYgKGZvcm1hdFtpXT09J1cnKSB7CisJCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1 ZmZlciwgMzIsICIlMDJkIiwgKGludCkgaXNvd2Vlayk7IC8qIGlzbyB3ZWVrbnIgKi8KKwkJCQl9 IGVsc2UgaWYgKGZvcm1hdFtpXT09J28nKSB7CisJCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1ZmZl ciwgMzIsICIlZCIsIChpbnQpIGlzb3llYXIpOyAvKiBpc28geWVhciAqLworCQkJCX0KKwkJCQli cmVhazsKIAogCQkJLyogbW9udGggKi8KIAkJCWNhc2UgJ0YnOiBsZW5ndGggPSBzbHByaW50Zihi dWZmZXIsIDMyLCAiJXMiLCBtb25fZnVsbF9uYW1lc1t0LT5tIC0gMV0pOyBicmVhazsKQEAgLTEw MTUsNyArMTAyMSw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFyICpmb3JtYXQsIGlu dCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJCQljYXNlICdhJzogbGVu Z3RoID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiVzIiwgdC0+aCA+PSAxMiA/ICJwbSIgOiAiYW0i KTsgYnJlYWs7CiAJCQljYXNlICdBJzogbGVuZ3RoID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiVz IiwgdC0+aCA+PSAxMiA/ICJQTSIgOiAiQU0iKTsgYnJlYWs7CiAJCQljYXNlICdCJzogewotCQkJ CWludCByZXR2YWwgPSAoKCgoKGxvbmcpdC0+c3NlKS0oKChsb25nKXQtPnNzZSkgLSAoKCgobG9u Zyl0LT5zc2UpICUgODY0MDApICsgMzYwMCkpKSAqIDEwKSAvIDg2NCk7CQkJCisJCQkJaW50IHJl dHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAtICgoKChsb25nKXQtPnNz ZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsKIAkJCQl3aGlsZSAocmV0dmFsIDwg MCkgewogCQkJCQlyZXR2YWwgKz0gMTAwMDsKIAkJCQl9CkBAIC0xMTE1LDcgKzExMjEsNyBAQCBz dGF0aWMgdm9pZCBwaHBfZGF0ZShJTlRFUk5BTF9GVU5DVElPTl9QQVJBTUVURVJTLCBpbnQgbG9j YWx0aW1lKQogCX0KIAogCXN0cmluZyA9IHBocF9mb3JtYXRfZGF0ZShmb3JtYXQsIGZvcm1hdF9s ZW4sIHRzLCBsb2NhbHRpbWUgVFNSTUxTX0NDKTsKLQkKKwogCVJFVFZBTF9TVFJJTkcoc3RyaW5n LCAwKTsKIH0KIC8qIH19fSAqLwpAQCAtMTEzOSw3ICsxMTQ1LDcgQEAgUEhQQVBJIGNoYXIgKnBo cF9mb3JtYXRfZGF0ZShjaGFyICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lX3QgdHMsIGlu dCBsb2NhbHQKIAl9CiAKIAlzdHJpbmcgPSBkYXRlX2Zvcm1hdChmb3JtYXQsIGZvcm1hdF9sZW4s IHQsIGxvY2FsdGltZSk7Ci0JCisKIAl0aW1lbGliX3RpbWVfZHRvcih0KTsKIAlyZXR1cm4gc3Ry aW5nOwogfQpAQCAtMTE4MCw3ICsxMTg2LDcgQEAgUEhQQVBJIGludCBwaHBfaWRhdGUoY2hhciBm b3JtYXQsIHRpbWVfdCB0cywgaW50IGxvY2FsdGltZSBUU1JNTFNfREMpCiAJCQlvZmZzZXQtPmxl YXBfc2VjcyA9IDA7CiAJCQlvZmZzZXQtPmlzX2RzdCA9IHQtPmRzdDsKIAkJCW9mZnNldC0+YWJi ciA9IG1hbGxvYyg5KTsgLyogR01U77+9eHh4eFwwICovCi0JCQlzbnByaW50ZihvZmZzZXQtPmFi YnIsIDksICJHTVQlYyUwMmQlMDJkIiwgCisJCQlzbnByaW50ZihvZmZzZXQtPmFiYnIsIDksICJH TVQlYyUwMmQlMDJkIiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsdGltZSA/ ICgob2Zmc2V0LT5vZmZzZXQgPCAwKSA/ICctJyA6ICcrJykgOiAnKycsCiAJCQkgICAgICAgICAg ICAgICAgICAgICAgICAgICFsb2NhbHRpbWUgPyBhYnMob2Zmc2V0LT5vZmZzZXQgLyAzNjAwKSA6 IDAsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbHRpbWUgPyBhYnMoKG9mZnNl dC0+b2Zmc2V0ICUgMzYwMCkgLyA2MCkgOiAwICk7CkBAIC0xMjEyLDcgKzEyMTgsNyBAQCBQSFBB UEkgaW50IHBocF9pZGF0ZShjaGFyIGZvcm1hdCwgdGltZV90IHRzLCBpbnQgbG9jYWx0aW1lIFRT Uk1MU19EQykKIAogCQkvKiBTd2F0Y2ggQmVhdCBhLmsuYS4gSW50ZXJuZXQgVGltZSAqLwogCQlj YXNlICdCJzoKLQkJCXJldHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAt ICgoKChsb25nKXQtPnNzZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsJCQkKKwkJ CXJldHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAtICgoKChsb25nKXQt PnNzZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsKIAkJCXdoaWxlIChyZXR2YWwg PCAwKSB7CiAJCQkJcmV0dmFsICs9IDEwMDA7CiAJCQl9CkBAIC0xMjY0LDcgKzEyNzAsNyBAQCBQ SFBfRlVOQ1RJT04oaWRhdGUpCiAJY2hhciAgICpmb3JtYXQ7CiAJaW50ICAgICBmb3JtYXRfbGVu OwogCWxvbmcgICAgdHMgPSAwOwotCWludCByZXQ7IAorCWludCByZXQ7CiAKIAlpZiAoemVuZF9w YXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJzfGwiLCAmZm9ybWF0 LCAmZm9ybWF0X2xlbiwgJnRzKSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKQEAgLTEy OTIsNyArMTI5OCw3IEBAIFBIUF9GVU5DVElPTihpZGF0ZSkKIFBIUEFQSSB2b2lkIHBocF9kYXRl X3NldF90emRiKHRpbWVsaWJfdHpkYiAqdHpkYikKIHsKIAljb25zdCB0aW1lbGliX3R6ZGIgKmJ1 aWx0aW4gPSB0aW1lbGliX2J1aWx0aW5fZGIoKTsKLQkKKwogCWlmIChwaHBfdmVyc2lvbl9jb21w YXJlKHR6ZGItPnZlcnNpb24sIGJ1aWx0aW4tPnZlcnNpb24pID4gMCkgewogCQlwaHBfZGF0ZV9n bG9iYWxfdGltZXpvbmVfZGIgPSB0emRiOwogCQlwaHBfZGF0ZV9nbG9iYWxfdGltZXpvbmVfZGJf ZW5hYmxlZCA9IDE7CkBAIC0xODA0LDcgKzE4MTAsNyBAQCBzdGF0aWMgdm9pZCBkYXRlX3Blcmlv ZF9pdF9jdXJyZW50X2RhdGEoemVuZF9vYmplY3RfaXRlcmF0b3IgKml0ZXIsIHp2YWwgKioqZGF0 YQogCWlmIChpdF90aW1lLT50el9pbmZvKSB7CiAJCW5ld2RhdGVvYmotPnRpbWUtPnR6X2luZm8g PSBpdF90aW1lLT50el9pbmZvOwogCX0KLQkKKwogCSpkYXRhID0gJml0ZXJhdG9yLT5jdXJyZW50 OwogfQogLyogfX19ICovCkBAIC0xOTY3LDEzICsxOTczLDEzIEBAIHN0YXRpYyBpbmxpbmUgemVu ZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfbmV3X2RhdGVfZXgoemVuZF9jbGFzc19lbnRyeSAq Y2xhc3NfCiAJaWYgKHB0cikgewogCQkqcHRyID0gaW50ZXJuOwogCX0KLQkKKwogCXplbmRfb2Jq ZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogCW9iamVj dF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwogCXJldHZh bC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KGludGVybiwgKHplbmRfb2JqZWN0c19z dG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmplY3RzX2Zy ZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0ZV9vYmplY3RfZnJlZV9zdG9yYWdlX2RhdGUsIE5VTEwg VFNSTUxTX0NDKTsKIAlyZXR2YWwuaGFuZGxlcnMgPSAmZGF0ZV9vYmplY3RfaGFuZGxlcnNfZGF0 ZTsKLQkKKwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTE5ODcsMTIgKzE5OTMsMTIgQEAgc3Rh dGljIHplbmRfb2JqZWN0X3ZhbHVlIGRhdGVfb2JqZWN0X2Nsb25lX2RhdGUoenZhbCAqdGhpc19w dHIgVFNSTUxTX0RDKQogCXBocF9kYXRlX29iaiAqbmV3X29iaiA9IE5VTEw7CiAJcGhwX2RhdGVf b2JqICpvbGRfb2JqID0gKHBocF9kYXRlX29iaiAqKSB6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2Jq ZWN0KHRoaXNfcHRyIFRTUk1MU19DQyk7CiAJemVuZF9vYmplY3RfdmFsdWUgbmV3X292ID0gZGF0 ZV9vYmplY3RfbmV3X2RhdGVfZXgob2xkX29iai0+c3RkLmNlLCAmbmV3X29iaiBUU1JNTFNfQ0Mp OwotCQorCiAJemVuZF9vYmplY3RzX2Nsb25lX21lbWJlcnMoJm5ld19vYmotPnN0ZCwgbmV3X292 LCAmb2xkX29iai0+c3RkLCBaX09CSl9IQU5ETEVfUCh0aGlzX3B0cikgVFNSTUxTX0NDKTsKIAlp ZiAoIW9sZF9vYmotPnRpbWUpIHsKIAkJcmV0dXJuIG5ld19vdjsKIAl9Ci0JCisKIAkvKiB0aGlz IHNob3VsZCBwcm9iYWJseSBtb3ZlZCB0byBhIG5ldyBgdGltZWxpYl90aW1lICp0aW1lbGltZV90 aW1lX2Nsb25lKHRpbWVsaWJfdGltZSAqKWAgKi8KIAluZXdfb2JqLT50aW1lID0gdGltZWxpYl90 aW1lX2N0b3IoKTsKIAkqbmV3X29iai0+dGltZSA9ICpvbGRfb2JqLT50aW1lOwpAQCAtMjAwMiw3 ICsyMDA4LDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3ZhbHVlIGRhdGVfb2JqZWN0X2Nsb25lX2Rh dGUoenZhbCAqdGhpc19wdHIgVFNSTUxTX0RDKQogCWlmIChvbGRfb2JqLT50aW1lLT50el9pbmZv KSB7CiAJCW5ld19vYmotPnRpbWUtPnR6X2luZm8gPSBvbGRfb2JqLT50aW1lLT50el9pbmZvOwog CX0KLQkKKwogCXJldHVybiBuZXdfb3Y7CiB9CiAKQEAgLTIwMTMsMTcgKzIwMTksMTcgQEAgc3Rh dGljIGludCBkYXRlX29iamVjdF9jb21wYXJlX2RhdGUoenZhbCAqZDEsIHp2YWwgKmQyIFRTUk1M U19EQykKIAkJaW5zdGFuY2VvZl9mdW5jdGlvbihaX09CSkNFX1AoZDIpLCBkYXRlX2NlX2RhdGUg VFNSTUxTX0NDKSkgewogCQlwaHBfZGF0ZV9vYmogKm8xID0gemVuZF9vYmplY3Rfc3RvcmVfZ2V0 X29iamVjdChkMSBUU1JNTFNfQ0MpOwogCQlwaHBfZGF0ZV9vYmogKm8yID0gemVuZF9vYmplY3Rf c3RvcmVfZ2V0X29iamVjdChkMiBUU1JNTFNfQ0MpOwotCQkKKwogCQlpZiAoIW8xLT50aW1lLT5z c2VfdXB0b2RhdGUpIHsKIAkJCXRpbWVsaWJfdXBkYXRlX3RzKG8xLT50aW1lLCBvMS0+dGltZS0+ dHpfaW5mbyk7CiAJCX0KIAkJaWYgKCFvMi0+dGltZS0+c3NlX3VwdG9kYXRlKSB7CiAJCQl0aW1l bGliX3VwZGF0ZV90cyhvMi0+dGltZSwgbzItPnRpbWUtPnR6X2luZm8pOwogCQl9Ci0JCQorCiAJ CXJldHVybiAobzEtPnRpbWUtPnNzZSA9PSBvMi0+dGltZS0+c3NlKSA/IDAgOiAoKG8xLT50aW1l LT5zc2UgPCBvMi0+dGltZS0+c3NlKSA/IC0xIDogMSk7CiAJfQotCQorCiAJcmV0dXJuIDE7CiB9 CiAKQEAgLTIxMDAsMTAgKzIxMDYsMTAgQEAgc3RhdGljIGlubGluZSB6ZW5kX29iamVjdF92YWx1 ZSBkYXRlX29iamVjdF9uZXdfdGltZXpvbmVfZXgoemVuZF9jbGFzc19lbnRyeSAqY2wKIAogCXpl bmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwog CW9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwog CXJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KGludGVybiwgKHplbmRfb2Jq ZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmpl Y3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0ZV9vYmplY3RfZnJlZV9zdG9yYWdlX3RpbWV6 b25lLCBOVUxMIFRTUk1MU19DQyk7CiAJcmV0dmFsLmhhbmRsZXJzID0gJmRhdGVfb2JqZWN0X2hh bmRsZXJzX3RpbWV6b25lOwotCQorCiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjExNywxMiAr MjEyMywxMiBAQCBzdGF0aWMgemVuZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfY2xvbmVfdGlt ZXpvbmUoenZhbCAqdGhpc19wdHIgVFNSTUxTX0RDKQogCXBocF90aW1lem9uZV9vYmogKm5ld19v YmogPSBOVUxMOwogCXBocF90aW1lem9uZV9vYmogKm9sZF9vYmogPSAocGhwX3RpbWV6b25lX29i aiAqKSB6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KHRoaXNfcHRyIFRTUk1MU19DQyk7CiAJ emVuZF9vYmplY3RfdmFsdWUgbmV3X292ID0gZGF0ZV9vYmplY3RfbmV3X3RpbWV6b25lX2V4KG9s ZF9vYmotPnN0ZC5jZSwgJm5ld19vYmogVFNSTUxTX0NDKTsKLQkKKwogCXplbmRfb2JqZWN0c19j bG9uZV9tZW1iZXJzKCZuZXdfb2JqLT5zdGQsIG5ld19vdiwgJm9sZF9vYmotPnN0ZCwgWl9PQkpf SEFORExFX1AodGhpc19wdHIpIFRTUk1MU19DQyk7CiAJaWYgKCFvbGRfb2JqLT5pbml0aWFsaXpl ZCkgewogCQlyZXR1cm4gbmV3X292OwogCX0KLQkKKwogCW5ld19vYmotPnR5cGUgPSBvbGRfb2Jq LT50eXBlOwogCW5ld19vYmotPmluaXRpYWxpemVkID0gMTsKIAlzd2l0Y2ggKG5ld19vYmotPnR5 cGUpIHsKQEAgLTIxMzgsNyArMjE0NCw3IEBAIHN0YXRpYyB6ZW5kX29iamVjdF92YWx1ZSBkYXRl X29iamVjdF9jbG9uZV90aW1lem9uZSh6dmFsICp0aGlzX3B0ciBUU1JNTFNfREMpCiAJCQluZXdf b2JqLT50emkuei5hYmJyICAgICAgID0gb2xkX29iai0+dHppLnouYWJicjsKIAkJCWJyZWFrOwog CX0KLQkKKwogCXJldHVybiBuZXdfb3Y7CiB9CiAKQEAgLTIxNTUsMTAgKzIxNjEsMTAgQEAgc3Rh dGljIGlubGluZSB6ZW5kX29iamVjdF92YWx1ZSBkYXRlX29iamVjdF9uZXdfaW50ZXJ2YWxfZXgo emVuZF9jbGFzc19lbnRyeSAqY2wKIAogCXplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0 ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogCW9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVy bi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwogCXJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNf c3RvcmVfcHV0KGludGVybiwgKHplbmRfb2JqZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3Rz X2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmplY3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0 ZV9vYmplY3RfZnJlZV9zdG9yYWdlX2ludGVydmFsLCBOVUxMIFRTUk1MU19DQyk7CiAJcmV0dmFs LmhhbmRsZXJzID0gJmRhdGVfb2JqZWN0X2hhbmRsZXJzX2ludGVydmFsOwotCQorCiAJcmV0dXJu IHJldHZhbDsKIH0KIApAQCAtMjE3Miw3ICsyMTc4LDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3Zh bHVlIGRhdGVfb2JqZWN0X2Nsb25lX2ludGVydmFsKHp2YWwgKnRoaXNfcHRyIFRTUk1MU19EQykK IAlwaHBfaW50ZXJ2YWxfb2JqICpuZXdfb2JqID0gTlVMTDsKIAlwaHBfaW50ZXJ2YWxfb2JqICpv bGRfb2JqID0gKHBocF9pbnRlcnZhbF9vYmogKikgemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVj dCh0aGlzX3B0ciBUU1JNTFNfQ0MpOwogCXplbmRfb2JqZWN0X3ZhbHVlIG5ld19vdiA9IGRhdGVf b2JqZWN0X25ld19pbnRlcnZhbF9leChvbGRfb2JqLT5zdGQuY2UsICZuZXdfb2JqIFRTUk1MU19D Qyk7Ci0JCisKIAl6ZW5kX29iamVjdHNfY2xvbmVfbWVtYmVycygmbmV3X29iai0+c3RkLCBuZXdf b3YsICZvbGRfb2JqLT5zdGQsIFpfT0JKX0hBTkRMRV9QKHRoaXNfcHRyKSBUU1JNTFNfQ0MpOwog CiAJLyoqIEZJWCBNRSBBREQgQ0xPTkUgU1RVRkYgKiovCkBAIC0yMjM4LDEwICsyMjQ0LDEwIEBA IHN0YXRpYyBpbmxpbmUgemVuZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfbmV3X3BlcmlvZF9l eCh6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzCiAKIAl6ZW5kX29iamVjdF9zdGRfaW5pdCgmaW50ZXJu LT5zdGQsIGNsYXNzX3R5cGUgVFNSTUxTX0NDKTsKIAlvYmplY3RfcHJvcGVydGllc19pbml0KCZp bnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0JCisKIAlyZXR2YWwuaGFuZGxlID0gemVuZF9vYmpl Y3RzX3N0b3JlX3B1dChpbnRlcm4sICh6ZW5kX29iamVjdHNfc3RvcmVfZHRvcl90KXplbmRfb2Jq ZWN0c19kZXN0cm95X29iamVjdCwgKHplbmRfb2JqZWN0c19mcmVlX29iamVjdF9zdG9yYWdlX3Qp IGRhdGVfb2JqZWN0X2ZyZWVfc3RvcmFnZV9wZXJpb2QsIE5VTEwgVFNSTUxTX0NDKTsKIAlyZXR2 YWwuaGFuZGxlcnMgPSAmZGF0ZV9vYmplY3RfaGFuZGxlcnNfcGVyaW9kOwotCQorCiAJcmV0dXJu IHJldHZhbDsKIH0KIApAQCAtMjI1NSw3ICsyMjYxLDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3Zh bHVlIGRhdGVfb2JqZWN0X2Nsb25lX3BlcmlvZCh6dmFsICp0aGlzX3B0ciBUU1JNTFNfREMpCiAJ cGhwX3BlcmlvZF9vYmogKm5ld19vYmogPSBOVUxMOwogCXBocF9wZXJpb2Rfb2JqICpvbGRfb2Jq ID0gKHBocF9wZXJpb2Rfb2JqICopIHplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QodGhpc19w dHIgVFNSTUxTX0NDKTsKIAl6ZW5kX29iamVjdF92YWx1ZSBuZXdfb3YgPSBkYXRlX29iamVjdF9u ZXdfcGVyaW9kX2V4KG9sZF9vYmotPnN0ZC5jZSwgJm5ld19vYmogVFNSTUxTX0NDKTsKLQkKKwog CXplbmRfb2JqZWN0c19jbG9uZV9tZW1iZXJzKCZuZXdfb2JqLT5zdGQsIG5ld19vdiwgJm9sZF9v YmotPnN0ZCwgWl9PQkpfSEFORExFX1AodGhpc19wdHIpIFRTUk1MU19DQyk7CiAKIAkvKiogRklY IE1FIEFERCBDTE9ORSBTVFVGRiAqKi8KQEAgLTIzMzksMTIgKzIzNDUsOCBAQCBzdGF0aWMgdm9p ZCB1cGRhdGVfZXJyb3JzX3dhcm5pbmdzKHRpbWVsaWJfZXJyb3JfY29udGFpbmVyICpsYXN0X2Vy cm9ycyBUU1JNTFNfRAogUEhQQVBJIGludCBwaHBfZGF0ZV9pbml0aWFsaXplKHBocF9kYXRlX29i aiAqZGF0ZW9iaiwgLypjb25zdCovIGNoYXIgKnRpbWVfc3RyLCBpbnQgdGltZV9zdHJfbGVuLCBj aGFyICpmb3JtYXQsIHp2YWwgKnRpbWV6b25lX29iamVjdCwgaW50IGN0b3IgVFNSTUxTX0RDKQog ewogCXRpbWVsaWJfdGltZSAgICpub3c7Ci0JdGltZWxpYl90emluZm8gKnR6aSA9IE5VTEw7CiAJ dGltZWxpYl9lcnJvcl9jb250YWluZXIgKmVyciA9IE5VTEw7Ci0JaW50IHR5cGUgPSBUSU1FTElC X1pPTkVUWVBFX0lELCBuZXdfZHN0OwotCWNoYXIgKm5ld19hYmJyOwotCXRpbWVsaWJfc2xsICAg ICBuZXdfb2Zmc2V0OwotCQorCiAJaWYgKGRhdGVvYmotPnRpbWUpIHsKIAkJdGltZWxpYl90aW1l X2R0b3IoZGF0ZW9iai0+dGltZSk7CiAJfQpAQCAtMjM2Nyw0OSArMjM2OSwzOCBAQCBQSFBBUEkg aW50IHBocF9kYXRlX2luaXRpYWxpemUocGhwX2RhdGVfb2JqICpkYXRlb2JqLCAvKmNvbnN0Ki8g Y2hhciAqdGltZV9zdHIsCiAJCXJldHVybiAwOwogCX0KIAorCW5vdyA9IHRpbWVsaWJfdGltZV9j dG9yKCk7CiAJaWYgKHRpbWV6b25lX29iamVjdCkgewogCQlwaHBfdGltZXpvbmVfb2JqICp0em9i ajsKIAogCQl0em9iaiA9IChwaHBfdGltZXpvbmVfb2JqICopIHplbmRfb2JqZWN0X3N0b3JlX2dl dF9vYmplY3QodGltZXpvbmVfb2JqZWN0IFRTUk1MU19DQyk7CiAJCXN3aXRjaCAodHpvYmotPnR5 cGUpIHsKIAkJCWNhc2UgVElNRUxJQl9aT05FVFlQRV9JRDoKLQkJCQl0emkgPSB0em9iai0+dHpp LnR6OworCQkJCW5vdy0+dHpfaW5mbyA9IHR6b2JqLT50emkudHo7CiAJCQkJYnJlYWs7CiAJCQlj YXNlIFRJTUVMSUJfWk9ORVRZUEVfT0ZGU0VUOgotCQkJCW5ld19vZmZzZXQgPSB0em9iai0+dHpp LnV0Y19vZmZzZXQ7CisJCQkJbm93LT56ID0gdHpvYmotPnR6aS51dGNfb2Zmc2V0OwogCQkJCWJy ZWFrOwogCQkJY2FzZSBUSU1FTElCX1pPTkVUWVBFX0FCQlI6Ci0JCQkJbmV3X29mZnNldCA9IHR6 b2JqLT50emkuei51dGNfb2Zmc2V0OwotCQkJCW5ld19kc3QgICAgPSB0em9iai0+dHppLnouZHN0 OwotCQkJCW5ld19hYmJyICAgPSBzdHJkdXAodHpvYmotPnR6aS56LmFiYnIpOworCQkJCW5vdy0+ eiA9IHR6b2JqLT50emkuei51dGNfb2Zmc2V0OworCQkJCW5vdy0+ZHN0ID0gdHpvYmotPnR6aS56 LmRzdDsKKwkJCQlub3ctPnR6X2FiYnIgPSBzdHJkdXAodHpvYmotPnR6aS56LmFiYnIpOwogCQkJ CWJyZWFrOwogCQl9Ci0JCXR5cGUgPSB0em9iai0+dHlwZTsKLQl9IGVsc2UgaWYgKGRhdGVvYmot PnRpbWUtPnR6X2luZm8pIHsKLQkJdHppID0gZGF0ZW9iai0+dGltZS0+dHpfaW5mbzsKKwkJbm93 LT56b25lX3R5cGUgPSB0em9iai0+dHlwZTsKIAl9IGVsc2UgewotCQl0emkgPSBnZXRfdGltZXpv bmVfaW5mbyhUU1JNTFNfQyk7CisJCW5vdy0+em9uZV90eXBlID0gVElNRUxJQl9aT05FVFlQRV9J RDsKKwkJaWYgKGRhdGVvYmotPnRpbWUtPnR6X2luZm8pIHsKKwkJCW5vdy0+dHpfaW5mbyA9IGRh dGVvYmotPnRpbWUtPnR6X2luZm87CisJCX0gZWxzZSB7CisJCQlub3ctPnR6X2luZm8gPSBnZXRf dGltZXpvbmVfaW5mbyhUU1JNTFNfQyk7CisJCX0KIAl9CiAKLQlub3cgPSB0aW1lbGliX3RpbWVf Y3RvcigpOwotCW5vdy0+em9uZV90eXBlID0gdHlwZTsKLQlzd2l0Y2ggKHR5cGUpIHsKLQkJY2Fz ZSBUSU1FTElCX1pPTkVUWVBFX0lEOgotCQkJbm93LT50el9pbmZvID0gdHppOwotCQkJYnJlYWs7 Ci0JCWNhc2UgVElNRUxJQl9aT05FVFlQRV9PRkZTRVQ6Ci0JCQlub3ctPnogPSBuZXdfb2Zmc2V0 OwotCQkJYnJlYWs7Ci0JCWNhc2UgVElNRUxJQl9aT05FVFlQRV9BQkJSOgotCQkJbm93LT56ID0g bmV3X29mZnNldDsKLQkJCW5vdy0+ZHN0ID0gbmV3X2RzdDsKLQkJCW5vdy0+dHpfYWJiciA9IG5l d19hYmJyOwotCQkJYnJlYWs7Ci0JfQogCXRpbWVsaWJfdW5peHRpbWUybG9jYWwobm93LCAodGlt ZWxpYl9zbGwpIHRpbWUoTlVMTCkpOwogCiAJdGltZWxpYl9maWxsX2hvbGVzKGRhdGVvYmotPnRp bWUsIG5vdywgVElNRUxJQl9OT19DTE9ORSk7Ci0JdGltZWxpYl91cGRhdGVfdHMoZGF0ZW9iai0+ dGltZSwgdHppKTsKKwl0aW1lbGliX3VwZGF0ZV90cyhkYXRlb2JqLT50aW1lLCBub3ctPnR6X2lu Zm8pOwogCiAJZGF0ZW9iai0+dGltZS0+aGF2ZV9yZWxhdGl2ZSA9IDA7CiAKQEAgLTI2MTMsNyAr MjYwNCw3IEBAIHZvaWQgcGhwX2RhdGVfZG9fcmV0dXJuX3BhcnNlZF90aW1lKElOVEVSTkFMX0ZV TkNUSU9OX1BBUkFNRVRFUlMsIHRpbWVsaWJfdGltZSAqCiAJUEhQX0RBVEVfUEFSU0VfREFURV9T RVRfVElNRV9FTEVNRU5UKGhvdXIsICAgICAgaCk7CiAJUEhQX0RBVEVfUEFSU0VfREFURV9TRVRf VElNRV9FTEVNRU5UKG1pbnV0ZSwgICAgaSk7CiAJUEhQX0RBVEVfUEFSU0VfREFURV9TRVRfVElN RV9FTEVNRU5UKHNlY29uZCwgICAgcyk7Ci0JCisKIAlpZiAocGFyc2VkX3RpbWUtPmYgPT0gLTk5 OTk5KSB7CiAJCWFkZF9hc3NvY19ib29sKHJldHVybl92YWx1ZSwgImZyYWN0aW9uIiwgMCk7CiAJ fSBlbHNlIHsKQEAgLTI2ODAsNyArMjY3MSw3IEBAIFBIUF9GVU5DVElPTihkYXRlX3BhcnNlKQog CWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9sZW47CiAJc3RydWN0IHRpbWVs aWJfZXJyb3JfY29udGFpbmVyICplcnJvcjsKIAl0aW1lbGliX3RpbWUgICAgICAgICAgICAgICAg ICAgKnBhcnNlZF90aW1lOwotCQorCiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05V TV9BUkdTKCkgVFNSTUxTX0NDLCAicyIsICZkYXRlLCAmZGF0ZV9sZW4pID09IEZBSUxVUkUpIHsK IAkJUkVUVVJOX0ZBTFNFOwogCX0KQEAgLTI2OTksNyArMjY5MCw3IEBAIFBIUF9GVU5DVElPTihk YXRlX3BhcnNlX2Zyb21fZm9ybWF0KQogCWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0ZV9sZW4sIGZvcm1hdF9sZW47CiAJc3RydWN0IHRpbWVsaWJfZXJyb3JfY29udGFpbmVyICpl cnJvcjsKIAl0aW1lbGliX3RpbWUgICAgICAgICAgICAgICAgICAgKnBhcnNlZF90aW1lOwotCQor CiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAi c3MiLCAmZm9ybWF0LCAmZm9ybWF0X2xlbiwgJmRhdGUsICZkYXRlX2xlbikgPT0gRkFJTFVSRSkg ewogCQlSRVRVUk5fRkFMU0U7CiAJfQpAQCAtMzA1Miw3ICszMDQzLDcgQEAgUEhQX0ZVTkNUSU9O KGRhdGVfaXNvZGF0ZV9zZXQpCiAJbWVtc2V0KCZkYXRlb2JqLT50aW1lLT5yZWxhdGl2ZSwgMCwg c2l6ZW9mKGRhdGVvYmotPnRpbWUtPnJlbGF0aXZlKSk7CiAJZGF0ZW9iai0+dGltZS0+cmVsYXRp dmUuZCA9IHRpbWVsaWJfZGF5bnJfZnJvbV93ZWVrbnIoeSwgdywgZCk7CiAJZGF0ZW9iai0+dGlt ZS0+aGF2ZV9yZWxhdGl2ZSA9IDE7Ci0JCisKIAl0aW1lbGliX3VwZGF0ZV90cyhkYXRlb2JqLT50 aW1lLCBOVUxMKTsKIAogCVJFVFVSTl9aVkFMKG9iamVjdCwgMSwgMCk7CkBAIC0zMTM5LDE1ICsz MTMwLDE1IEBAIFBIUF9GVU5DVElPTihkYXRlX2RpZmYpCiBzdGF0aWMgaW50IHRpbWV6b25lX2lu aXRpYWxpemUodGltZWxpYl90emluZm8gKip0emksIC8qY29uc3QqLyBjaGFyICp0eiBUU1JNTFNf REMpCiB7CiAJY2hhciAqdHppZDsKLQkKKwogCSp0emkgPSBOVUxMOwotCQorCiAJaWYgKCh0emlk ID0gdGltZWxpYl90aW1lem9uZV9pZF9mcm9tX2FiYnIodHosIC0xLCAwKSkpIHsKIAkJKnR6aSA9 IHBocF9kYXRlX3BhcnNlX3R6ZmlsZSh0emlkLCBEQVRFX1RJTUVaT05FREIgVFNSTUxTX0NDKTsK IAl9IGVsc2UgewogCQkqdHppID0gcGhwX2RhdGVfcGFyc2VfdHpmaWxlKHR6LCBEQVRFX1RJTUVa T05FREIgVFNSTUxTX0NDKTsKIAl9Ci0JCisKIAlpZiAoKnR6aSkgewogCQlyZXR1cm4gU1VDQ0VT UzsKIAl9IGVsc2UgewpAQCAtMzE4OSw3ICszMTgwLDcgQEAgUEhQX01FVEhPRChEYXRlVGltZVpv bmUsIF9fY29uc3RydWN0KQogCXRpbWVsaWJfdHppbmZvICp0emkgPSBOVUxMOwogCXBocF90aW1l em9uZV9vYmogKnR6b2JqOwogCXplbmRfZXJyb3JfaGFuZGxpbmcgZXJyb3JfaGFuZGxpbmc7Ci0J CisKIAl6ZW5kX3JlcGxhY2VfZXJyb3JfaGFuZGxpbmcoRUhfVEhST1csIE5VTEwsICZlcnJvcl9o YW5kbGluZyBUU1JNTFNfQ0MpOwogCWlmIChTVUNDRVNTID09IHplbmRfcGFyc2VfcGFyYW1ldGVy cyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAicyIsICZ0eiwgJnR6X2xlbikpIHsKIAkJaWYg KFNVQ0NFU1MgPT0gdGltZXpvbmVfaW5pdGlhbGl6ZSgmdHppLCB0eiBUU1JNTFNfQ0MpKSB7CkBA IC0zNDE2LDcgKzM0MDcsNyBAQCBzdGF0aWMgaW50IGRhdGVfaW50ZXJ2YWxfaW5pdGlhbGl6ZSh0 aW1lbGliX3JlbF90aW1lICoqcnQsIC8qY29uc3QqLyBjaGFyICpmb3JtYQogCXN0cnVjdCB0aW1l bGliX2Vycm9yX2NvbnRhaW5lciAqZXJyb3JzOwogCiAJdGltZWxpYl9zdHJ0b2ludGVydmFsKGZv cm1hdCwgZm9ybWF0X2xlbmd0aCwgJmIsICZlLCAmcCwgJnIsICZlcnJvcnMpOwotCQorCiAJaWYg KGVycm9ycy0+ZXJyb3JfY291bnQgPiAwKSB7CiAJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JN TFNfQ0MsIEVfV0FSTklORywgIlVua25vd24gb3IgYmFkIGZvcm1hdCAoJXMpIiwgZm9ybWF0KTsK IAkJcmV0dmFsID0gRkFJTFVSRTsKQEAgLTM1NzEsNyArMzU2Miw3IEBAIFBIUF9NRVRIT0QoRGF0 ZUludGVydmFsLCBfX2NvbnN0cnVjdCkKIAlwaHBfaW50ZXJ2YWxfb2JqICpkaW9iajsKIAl0aW1l bGliX3JlbF90aW1lICpyZWx0aW1lOwogCXplbmRfZXJyb3JfaGFuZGxpbmcgZXJyb3JfaGFuZGxp bmc7Ci0JCisKIAl6ZW5kX3JlcGxhY2VfZXJyb3JfaGFuZGxpbmcoRUhfVEhST1csIE5VTEwsICZl cnJvcl9oYW5kbGluZyBUU1JNTFNfQ0MpOwogCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVO RF9OVU1fQVJHUygpIFRTUk1MU19DQywgInMiLCAmaW50ZXJ2YWxfc3RyaW5nLCAmaW50ZXJ2YWxf c3RyaW5nX2xlbmd0aCkgPT0gU1VDQ0VTUykgewogCQlpZiAoZGF0ZV9pbnRlcnZhbF9pbml0aWFs aXplKCZyZWx0aW1lLCBpbnRlcnZhbF9zdHJpbmcsIGludGVydmFsX3N0cmluZ19sZW5ndGggVFNS TUxTX0NDKSA9PSBTVUNDRVNTKSB7CkBAIC0zNzY3LDcgKzM3NTgsNyBAQCBzdGF0aWMgaW50IGRh dGVfcGVyaW9kX2luaXRpYWxpemUodGltZWxpYl90aW1lICoqc3QsIHRpbWVsaWJfdGltZSAqKmV0 LCB0aW1lbGliXwogCXN0cnVjdCB0aW1lbGliX2Vycm9yX2NvbnRhaW5lciAqZXJyb3JzOwogCiAJ dGltZWxpYl9zdHJ0b2ludGVydmFsKGZvcm1hdCwgZm9ybWF0X2xlbmd0aCwgJmIsICZlLCAmcCwg JnIsICZlcnJvcnMpOwotCQorCiAJaWYgKGVycm9ycy0+ZXJyb3JfY291bnQgPiAwKSB7CiAJCXBo cF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgIlVua25vd24gb3IgYmFk IGZvcm1hdCAoJXMpIiwgZm9ybWF0KTsKIAkJcmV0dmFsID0gRkFJTFVSRTsKQEAgLTM3OTYsNyAr Mzc4Nyw3IEBAIFBIUF9NRVRIT0QoRGF0ZVBlcmlvZCwgX19jb25zdHJ1Y3QpCiAJaW50ICAgaXNv c3RyX2xlbiA9IDA7CiAJdGltZWxpYl90aW1lICpjbG9uZTsKIAl6ZW5kX2Vycm9yX2hhbmRsaW5n IGVycm9yX2hhbmRsaW5nOwotCQorCiAJemVuZF9yZXBsYWNlX2Vycm9yX2hhbmRsaW5nKEVIX1RI Uk9XLCBOVUxMLCAmZXJyb3JfaGFuZGxpbmcgVFNSTUxTX0NDKTsKIAlpZiAoemVuZF9wYXJzZV9w YXJhbWV0ZXJzX2V4KFpFTkRfUEFSU0VfUEFSQU1TX1FVSUVULCBaRU5EX05VTV9BUkdTKCkgVFNS TUxTX0NDLCAiT09sfGwiLCAmc3RhcnQsIGRhdGVfY2VfZGF0ZSwgJmludGVydmFsLCBkYXRlX2Nl X2ludGVydmFsLCAmcmVjdXJyZW5jZXMsICZvcHRpb25zKSA9PSBGQUlMVVJFKSB7CiAJCWlmICh6 ZW5kX3BhcnNlX3BhcmFtZXRlcnNfZXgoWkVORF9QQVJTRV9QQVJBTVNfUVVJRVQsIFpFTkRfTlVN X0FSR1MoKSBUU1JNTFNfQ0MsICJPT098bCIsICZzdGFydCwgZGF0ZV9jZV9kYXRlLCAmaW50ZXJ2 YWwsIGRhdGVfY2VfaW50ZXJ2YWwsICZlbmQsIGRhdGVfY2VfZGF0ZSwgJm9wdGlvbnMpID09IEZB SUxVUkUpIHsKQEAgLTM5MDksNyArMzkwMCw3IEBAIFBIUF9GVU5DVElPTih0aW1lem9uZV9pZGVu dGlmaWVyc19saXN0KQogCXR6ZGIgPSBEQVRFX1RJTUVaT05FREI7CiAJaXRlbV9jb3VudCA9IHR6 ZGItPmluZGV4X3NpemU7CiAJdGFibGUgPSB0emRiLT5pbmRleDsKLQkKKwogCWFycmF5X2luaXQo cmV0dXJuX3ZhbHVlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBpdGVtX2NvdW50OyArK2kpIHsKQEAg LTM5NDMsNyArMzkzNCw3IEBAIFBIUF9GVU5DVElPTih0aW1lem9uZV9hYmJyZXZpYXRpb25zX2xp c3QpCiB7CiAJY29uc3QgdGltZWxpYl90el9sb29rdXBfdGFibGUgKnRhYmxlLCAqZW50cnk7CiAJ enZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgKmVsZW1lbnQsICoqYWJicl9hcnJheV9wcCwg KmFiYnJfYXJyYXk7Ci0JCisKIAl0YWJsZSA9IHRpbWVsaWJfdGltZXpvbmVfYWJicmV2aWF0aW9u c19saXN0KCk7CiAJYXJyYXlfaW5pdChyZXR1cm5fdmFsdWUpOwogCWVudHJ5ID0gdGFibGU7CkBA IC00MDE5LDExICs0MDEwLDExIEBAIHN0YXRpYyB2b2lkIHBocF9kb19kYXRlX3N1bnJpc2Vfc3Vu c2V0KElOVEVSTkFMX0ZVTkNUSU9OX1BBUkFNRVRFUlMsIGludCBjYWxjX3N1CiAJdGltZWxpYl90 aW1lICAgKnQ7CiAJdGltZWxpYl90emluZm8gKnR6aTsKIAljaGFyICAgICAgICAgICAqcmV0c3Ry OwotCQorCiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxT X0NDLCAibHxsZGRkZCIsICZ0aW1lLCAmcmV0Zm9ybWF0LCAmbGF0aXR1ZGUsICZsb25naXR1ZGUs ICZ6ZW5pdGgsICZnbXRfb2Zmc2V0KSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKIAl9 Ci0JCisKIAlzd2l0Y2ggKFpFTkRfTlVNX0FSR1MoKSkgewogCQljYXNlIDE6CiAJCQlyZXRmb3Jt YXQgPSBTVU5GVU5DU19SRVRfU1RSSU5HOwpAQCAtNDA2Nyw3ICs0MDU4LDcgQEAgc3RhdGljIHZv aWQgcGhwX2RvX2RhdGVfc3VucmlzZV9zdW5zZXQoSU5URVJOQUxfRlVOQ1RJT05fUEFSQU1FVEVS UywgaW50IGNhbGNfc3UKIAl0aW1lbGliX3VuaXh0aW1lMmxvY2FsKHQsIHRpbWUpOwogCXJzID0g dGltZWxpYl9hc3Ryb19yaXNlX3NldF9hbHRpdHVkZSh0LCBsb25naXR1ZGUsIGxhdGl0dWRlLCBh bHRpdHVkZSwgMSwgJmhfcmlzZSwgJmhfc2V0LCAmcmlzZSwgJnNldCwgJnRyYW5zaXQpOwogCXRp bWVsaWJfdGltZV9kdG9yKHQpOwotCQorCiAJaWYgKHJzICE9IDApIHsKIAkJUkVUVVJOX0ZBTFNF OwogCX0KQEAgLTQxMjEsNyArNDExMiw3IEBAIFBIUF9GVU5DVElPTihkYXRlX3N1bl9pbmZvKQog CXRpbWVsaWJfc2xsICAgICByaXNlLCBzZXQsIHRyYW5zaXQ7CiAJaW50ICAgICAgICAgICAgIGR1 bW15OwogCWRvdWJsZSAgICAgICAgICBkZHVtbXk7Ci0JCisKIAlpZiAoemVuZF9wYXJzZV9wYXJh bWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJsZGQiLCAmdGltZSwgJmxhdGl0dWRl LCAmbG9uZ2l0dWRlKSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKIAl9CkBAIC00MTM1 LDcgKzQxMjYsNyBAQCBQSFBfRlVOQ1RJT04oZGF0ZV9zdW5faW5mbykKIAkvKiBTZXR1cCAqLwog CXQyID0gdGltZWxpYl90aW1lX2N0b3IoKTsKIAlhcnJheV9pbml0KHJldHVybl92YWx1ZSk7Ci0J CisKIAkvKiBHZXQgc3VuIHVwL2Rvd24gYW5kIHRyYW5zaXQgKi8KIAlycyA9IHRpbWVsaWJfYXN0 cm9fcmlzZV9zZXRfYWx0aXR1ZGUodCwgbG9uZ2l0dWRlLCBsYXRpdHVkZSwgLTM1LjAvNjAsIDEs ICZkZHVtbXksICZkZHVtbXksICZyaXNlLCAmc2V0LCAmdHJhbnNpdCk7CiAJc3dpdGNoIChycykg ewo= --14dae93b608e6f364c04d0489695--