Date: Thu, 09 Apr 2009 15:33:54 +0200 From: =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@FreeBSD.org> To: freebsd-current@FreeBSD.org Subject: New ioctl to support Enhanced CD (or Extra CD) Message-ID: <49DDF942.9040808@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------050509060905070000010304 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, Enhanced CD (or Extra CA) is an Audio CD with an additionnal data track at the end. Audio tracks belong to the first session while the data track belongs to the second session. Therefore the last audio track ends way before the data track start. The first consequence is that the duration of the last audio track isn't reported correctly. Here is the output of cdcontrol(1) with such a CD[1]: $ cdcontrol info ... 12 46:03.67 9:54.43 207142 44593 audio 13 55:58.35 6:38.51 251735 29901 data The expected output is: $ cdcontrol info ... 12 46:03.67 7:22.43 207142 33193 audio 13 55:58.35 6:38.51 251735 29901 data A more "audible" consequence is that cdparanoia(1) copies 9'54" of data instead of 7'22". The end of the ripped file is full of garbage. I made a patch (attached) that adds a new ioctl to query the start address of the last session. This new ioctl is named CDIOREADLASTSESSIONADDR. The patch also includes changes to cdcontrol(1). I added a new member at the end of struct acd_softc to store the last session address. I don't know if this causes ABI breakage. Linux' corresponding ioctl is CDROMMULTISESSION. Beside this address, it returns a flag named "xa_flag". Currently, I don't understand what it is but it may be useful to add it to our ioctl too if someone knows its purpose. Before I spend some time to teach cdparanoia(1) about this new ioctl, I'd like some feedback on this patch, especially the name and the struct ioc_read_last_session_addr. I would appreciate some test reports too! :) [1] This was tested with Avishai Cohen's last album, "Aurora". - -- Jean-Sébastien Pédron http://www.dumbbell.fr/ PGP Key: http://www.dumbbell.fr/pgp/pubkey.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAknd+UIACgkQa+xGJsFYOlNzCgCeNz3PEoL7nqSsc1mMcKOBAYag MUUAoIFVuhZ9lEPsvI17V3tRYCeOjvDM =pUJY -----END PGP SIGNATURE----- --------------050509060905070000010304 Content-Type: text/plain; name="enhanced-cd-b.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="enhanced-cd-b.patch" SW5kZXg6IHVzci5zYmluL2NkY29udHJvbC9jZGNvbnRyb2wuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSB1c3Iuc2Jpbi9jZGNvbnRyb2wvY2Rjb250cm9sLmMJKHJldmlzaW9uIDE5MDQ2MykKKysr IHVzci5zYmluL2NkY29udHJvbC9jZGNvbnRyb2wuYwkod29ya2luZyBjb3B5KQpAQCAtMTIw LDYgKzEyMCw3IEBACiB9OwogCiBzdHJ1Y3QgY2RfdG9jX2VudHJ5CXRvY19idWZmZXJbMTAw XTsKK3VuaW9uIG1zZl9sYmEJCWxhc3Rfc2Vzc2lvbl9hZGRyOwogCiBjb25zdCBjaGFyCSpj ZG5hbWU7CiBpbnQJCWZkID0gLTE7CkBAIC0xMDIxLDYgKzEwMjIsMzYgQEAKIAkJCWVbMV0u YWRkci5tc2YuZnJhbWUpOwogCWVsc2UKIAkJbmV4dCA9IG50b2hsKGVbMV0uYWRkci5sYmEp OworCisJaWYgKCEoZS0+Y29udHJvbCAmIDQpICYmIGVbMV0uY29udHJvbCAmIDQpIHsKKwkJ aW50IGVuZF9sYmE7CisKKwkJLyoKKwkJICogVGhlIGN1cnJlbnQgdHJhY2sgaXMgYW4gYXVk aW8gdHJhY2sgYW5kIHRoZSBuZXh0IG9uZSBpcworCQkgKiBhIGRhdGEgdHJhY2s6IHRoaXMg aXMgYW4gRW5oYW5jZWQgQ0QgKG9yIEV4dHJhIENEKS4gSW4KKwkJICogdGhpcyBjYXNlLCB0 aGUgY3VycmVudCB0cmFjayBlbmRzIHdheSBiZWZvcmUgdGhlIGRhdGEKKwkJICogdHJhY2su IFdlIG11c3QgY29uc2lkZXIgdGhlIGxhc3Rfc2Vzc2lvbl9hZGRyIGluc3RlYWQuCisJCSAq LworCisJCWlmIChsYXN0X3Nlc3Npb25fYWRkci5sYmEgIT0gMCkgeworCQkJaWYgKG1zZikg eworCQkJCWVuZF9sYmEgPSBtc2YybGJhKGxhc3Rfc2Vzc2lvbl9hZGRyLm1zZi5taW51dGUs CisJCQkJICAgIGxhc3Rfc2Vzc2lvbl9hZGRyLm1zZi5zZWNvbmQsCisJCQkJICAgIGxhc3Rf c2Vzc2lvbl9hZGRyLm1zZi5mcmFtZSk7CisJCQl9IGVsc2UgeworCQkJCWVuZF9sYmEgPSBs YXN0X3Nlc3Npb25fYWRkci5sYmE7CisJCQl9CisJCQllbmRfbGJhIC09ICg5MCArIDYwICsg MikgKiA3NTsKKworCQkJaWYgKGVuZF9sYmEgPj0gYmxvY2sgJiYgZW5kX2xiYSA8IG5leHQp CisJCQkJbmV4dCA9IGVuZF9sYmE7CisJCX0gZWxzZSB7CisJCQl3YXJueCgiY291bGRuJ3Qg cXVlcnkgc2Vzc2lvbnMgaW5mb3JtYXRpb25zOyAiCisJCQkgICAgImxhc3QgYXVkaW8gdHJh Y2tcbmVmZmVjdGl2ZSBkdXJhdGlvbiAiCisJCQkgICAgIm1heSBiZSBzaG9ydGVyIHRoYW4g dGhlIHJlcG9ydGVkIGR1cmF0aW9uISIpOworCQl9CisJfQorCiAJbGVuID0gbmV4dCAtIGJs b2NrOwogCS8qIFRha2UgaW50byBhY2NvdW50IGEgc3RhcnQgb2Zmc2V0IHRpbWUuICovCiAJ bGJhMm1zZiAobGVuIC0gMTUwLCAmbSwgJnMsICZmKTsKQEAgLTEwNjksMTQgKzExMDAsMjgg QEAKIAogaW50IHJlYWRfdG9jX2VudHJ5cyAoaW50IGxlbikKIHsKKwlpbnQgcmV0OwogCXN0 cnVjdCBpb2NfcmVhZF90b2NfZW50cnkgdDsKKwlzdHJ1Y3QgaW9jX3JlYWRfbGFzdF9zZXNz aW9uX2FkZHIgbHNhOwogCiAJdC5hZGRyZXNzX2Zvcm1hdCA9IG1zZiA/IENEX01TRl9GT1JN QVQgOiBDRF9MQkFfRk9STUFUOwogCXQuc3RhcnRpbmdfdHJhY2sgPSAwOwogCXQuZGF0YV9s ZW4gPSBsZW47CiAJdC5kYXRhID0gdG9jX2J1ZmZlcjsKIAotCXJldHVybiAoaW9jdGwgKGZk LCBDRElPUkVBRFRPQ0VOVFJZUywgKGNoYXIgKikgJnQpKTsKKwlyZXQgPSBpb2N0bCAoZmQs IENESU9SRUFEVE9DRU5UUllTLCAoY2hhciAqKSAmdCk7CisJaWYgKHJldCAhPSAwKQorCQly ZXR1cm4gKHJldCk7CisKKwlsc2EuYWRkcmVzc19mb3JtYXQgPSBtc2YgPyBDRF9NU0ZfRk9S TUFUIDogQ0RfTEJBX0ZPUk1BVDsKKworCXJldCA9IGlvY3RsIChmZCwgQ0RJT1JFQURMQVNU U0VTU0lPTkFERFIsIChjaGFyICopICZsc2EpOworCWlmIChyZXQgPT0gMCkgeworCQltZW1j cHkoJmxhc3Rfc2Vzc2lvbl9hZGRyLCAmbHNhLmFkZHIsCisJCSAgICBzaXplb2YobGFzdF9z ZXNzaW9uX2FkZHIpKTsKKwl9CisKKwlyZXR1cm4gKDApOwogfQogCiBpbnQgcGxheV9tc2Yg KGludCBzdGFydF9tLCBpbnQgc3RhcnRfcywgaW50IHN0YXJ0X2YsCkluZGV4OiBzeXMvY2Ft L3Njc2kvc2NzaV9jZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jYW0vc2NzaS9zY3NpX2Nk LmMJKHJldmlzaW9uIDE5MDQ2MykKKysrIHN5cy9jYW0vc2NzaS9zY3NpX2NkLmMJKHdvcmtp bmcgY29weSkKQEAgLTI1Myw3ICsyNTMsOCBAQAogCQkJCXVfaW50MzJfdCBzZW5zZV9mbGFn cyk7CiBzdGF0aWMJaW50CQljZHJlYWR0b2Moc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCwg dV9pbnQzMl90IG1vZGUsIAogCQkJCSAgdV9pbnQzMl90IHN0YXJ0LCB1X2ludDhfdCAqZGF0 YSwgCi0JCQkJICB1X2ludDMyX3QgbGVuLCB1X2ludDMyX3Qgc2Vuc2VfZmxhZ3MpOworCQkJ CSAgdV9pbnQzMl90IGxlbiwgdV9pbnQ4X3QgY29udHJvbCwKKwkJCQkgIHVfaW50MzJfdCBz ZW5zZV9mbGFncyk7CiBzdGF0aWMJaW50CQljZGdldG1vZGUoc3RydWN0IGNhbV9wZXJpcGgg KnBlcmlwaCwgCiAJCQkJICBzdHJ1Y3QgY2RfbW9kZV9wYXJhbXMgKmRhdGEsIHVfaW50MzJf dCBwYWdlKTsKIHN0YXRpYwlpbnQJCWNkc2V0bW9kZShzdHJ1Y3QgY2FtX3BlcmlwaCAqcGVy aXBoLApAQCAtMjEyMiw3ICsyMTIzLDggQEAKIAkJCQkgICgidHJ5aW5nIHRvIGRvIENESU9S RUFEVE9DSEVBREVSXG4iKSk7CiAKIAkJCWVycm9yID0gY2RyZWFkdG9jKHBlcmlwaCwgMCwg MCwgKHVfaW50OF90ICopdGgsIAotCQkJCSAgICAgICAgICBzaXplb2YgKCp0aCksIC8qc2Vu c2VfZmxhZ3MqLzApOworCQkJCSAgICAgICAgICBzaXplb2YgKCp0aCksIC8qY29udHJvbCov MCwKKwkJCQkgICAgICAgICAgLypzZW5zZV9mbGFncyovMCk7CiAJCQlpZiAoZXJyb3IpIHsK IAkJCQlmcmVlKHRoLCBNX1NDU0lDRCk7CiAJCQkJY2FtX3BlcmlwaF91bmxvY2socGVyaXBo KTsKQEAgLTIxNzQsNyArMjE3Niw4IEBACiAKIAkJCXRoID0gJmRhdGEtPmhlYWRlcjsKIAkJ CWVycm9yID0gY2RyZWFkdG9jKHBlcmlwaCwgMCwgMCwgKHVfaW50OF90ICopdGgsIAotCQkJ CQkgIHNpemVvZiAoKnRoKSwgLypzZW5zZV9mbGFncyovMCk7CisJCQkJCSAgc2l6ZW9mICgq dGgpLCAvKmNvbnRyb2wqLzAsCisJCQkJCSAgLypzZW5zZV9mbGFncyovMCk7CiAJCQlpZiAo ZXJyb3IpIHsKIAkJCQlmcmVlKGRhdGEsIE1fU0NTSUNEKTsKIAkJCQlmcmVlKGxlYWQsIE1f U0NTSUNEKTsKQEAgLTIyMzMsNiArMjIzNiw3IEBACiAJCQkJCQkgIHN0YXJ0aW5nX3RyYWNr LAogCQkJCQkJICAodV9pbnQ4X3QgKilkYXRhLAogCQkJCQkJICByZWFkbGVuICsgc2l6ZW9m ICgqdGgpLAorCQkJCQkJICAvKmNvbnRyb2wqLzAsCiAJCQkJCQkgIC8qc2Vuc2VfZmxhZ3Mq LzApOwogCQkJCWlmIChlcnJvcikgewogCQkJCQlmcmVlKGRhdGEsIE1fU0NTSUNEKTsKQEAg LTIyNTAsNiArMjI1NCw3IEBACiAJCQkJZXJyb3IgPSBjZHJlYWR0b2MocGVyaXBoLCB0ZS0+ YWRkcmVzc19mb3JtYXQsCiAJCQkJCQkgIExFQURPVVQsICh1X2ludDhfdCAqKWxlYWQsCiAJ CQkJCQkgIHNpemVvZigqbGVhZCksCisJCQkJCQkgIC8qY29udHJvbCovMCwKIAkJCQkJCSAg LypzZW5zZV9mbGFncyovMCk7CiAJCQkJaWYgKGVycm9yKSB7CiAJCQkJCWZyZWUoZGF0YSwg TV9TQ1NJQ0QpOwpAQCAtMjI5OSw3ICsyMzA0LDggQEAKIAogCQkJdGggPSAmZGF0YS0+aGVh ZGVyOwogCQkJZXJyb3IgPSBjZHJlYWR0b2MocGVyaXBoLCAwLCAwLCAodV9pbnQ4X3QgKil0 aCwKLQkJCQkJICBzaXplb2YgKCp0aCksIC8qc2Vuc2VfZmxhZ3MqLzApOworCQkJCQkgIHNp emVvZiAoKnRoKSwgLypjb250cm9sKi8wLAorCQkJCQkgIC8qc2Vuc2VfZmxhZ3MqLzApOwog CQkJaWYgKGVycm9yKSB7CiAJCQkJZnJlZShkYXRhLCBNX1NDU0lDRCk7CiAJCQkJY2FtX3Bl cmlwaF91bmxvY2socGVyaXBoKTsKQEAgLTIzMzEsNiArMjMzNyw3IEBACiAKIAkJCWVycm9y ID0gY2RyZWFkdG9jKHBlcmlwaCwgdGUtPmFkZHJlc3NfZm9ybWF0LCB0cmFjaywKIAkJCQkJ ICAodV9pbnQ4X3QgKilkYXRhLCBzaXplb2YoKmRhdGEpLAorCQkJCQkgIC8qY29udHJvbCov MCwKIAkJCQkJICAvKnNlbnNlX2ZsYWdzKi8wKTsKIAkJCWlmIChlcnJvcikgewogCQkJCWZy ZWUoZGF0YSwgTV9TQ1NJQ0QpOwpAQCAtMjM0Niw2ICsyMzUzLDk2IEBACiAJCQljYW1fcGVy aXBoX3VubG9jayhwZXJpcGgpOwogCQl9CiAJCWJyZWFrOworCWNhc2UgQ0RJT1JFQURMQVNU U0VTU0lPTkFERFI6CisJCS8qCisJCSAqIEFuICJFbmhhbmNlZCBDRCIgKG9yICJFeHRyYSBD RCIpIGlzIGEgQ0Qgd2l0aCBhdWRpbworCQkgKiB0cmFja3MsIHRoZW4gZGF0YSB0cmFja3Mu IEF1ZGlvIHRyYWNrcyBhcmUgaW4gdGhlCisJCSAqIGZpcnN0IHNlc3Npb24sIHdoaWxlIGRh dGEgdHJhY2tzIGFyZSBpbiB0aGUgc2Vjb25kCisJCSAqIHNlc3Npb24uIEJlY2F1c2Ugb2Yg dGhlIHNwYWNlIHRha2VuIGJ5IHRoZSBmaXJzdAorCQkgKiBzZXNzaW9uJ3MgbGVhZC1vdXQg YW5kIHRoZSBzZWNvbmQgc2Vzc2lvbidzIGxlYWQtaW4sCisJCSAqIHRoZSBkdXJhdGlvbiBv ZiB0aGUgbGFzdCBhdWRpbyB0cmFjayBjYW4ndCBiZSBkZXRlcm1pbmVkCisJCSAqIHdpdGgg dGhlIGFkZHJlc3Mgb2YgdGhlIGRhdGEgdHJhY2suIFRoZXJlZm9yZSwgd2UgbmVlZAorCQkg KiB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlY29uZCAoYW5kIGxhc3QpIHNlc3Npb24g Zm9yCisJCSAqIHRoaXMgcHVycG9zZS4KKwkJICovCisJCXsKKwkJCXN0cnVjdCBjZF90b2Nf c2luZ2xlICpkYXRhOworCQkJc3RydWN0IGlvY19yZWFkX2xhc3Rfc2Vzc2lvbl9hZGRyICps c2EgPQorCQkJCShzdHJ1Y3QgaW9jX3JlYWRfbGFzdF9zZXNzaW9uX2FkZHIgKikgYWRkcjsK KwkJCXN0cnVjdCBpb2NfdG9jX2hlYWRlciAqdGg7CisKKwkJCWRhdGEgPSBtYWxsb2Moc2l6 ZW9mKCpkYXRhKSwgTV9TQ1NJQ0QsIE1fV0FJVE9LKTsKKworCQkJY2FtX3BlcmlwaF9sb2Nr KHBlcmlwaCk7CisJCQlDQU1fREVCVUcocGVyaXBoLT5wYXRoLCBDQU1fREVCVUdfU1VCVFJB Q0UsIAorCQkJCSAgKCJ0cnlpbmcgdG8gZG8gQ0RJT1JFQURMQVNUU0VTU0lPTkFERFJcbiIp KTsKKworCQkJaWYgKGxzYS0+YWRkcmVzc19mb3JtYXQgIT0gQ0RfTVNGX0ZPUk1BVAorCQkJ ICAgICYmIGxzYS0+YWRkcmVzc19mb3JtYXQgIT0gQ0RfTEJBX0ZPUk1BVCkgeworCQkJCXBy aW50ZigiZXJyb3IgaW4gcmVhZGxhc3RzZXNzaW9uYWRkciwgIgorCQkJCSAgICAgICAiIHJl dHVybmluZyBFSU5WQUxcbiIpOworCQkJCWZyZWUoZGF0YSwgTV9TQ1NJQ0QpOworCQkJCWVy cm9yID0gRUlOVkFMOworCQkJCWNhbV9wZXJpcGhfdW5sb2NrKHBlcmlwaCk7CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCXRoID0gJmRhdGEtPmhlYWRlcjsKKwkJCWVycm9yID0gY2RyZWFk dG9jKHBlcmlwaCwgMCwgMCwgKHVfaW50OF90ICopdGgsCisJCQkJCSAgc2l6ZW9mICgqdGgp LCAvKmNvbnRyb2wqLzAsCisJCQkJCSAgLypzZW5zZV9mbGFncyovMCk7CisJCQlpZiAoZXJy b3IpIHsKKwkJCQlmcmVlKGRhdGEsIE1fU0NTSUNEKTsKKwkJCQljYW1fcGVyaXBoX3VubG9j ayhwZXJpcGgpOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAoc29mdGMtPnF1aXJrcyAm IENEX1FfQkNEX1RSQUNLUykgeworCQkJCS8qIHdlIGFyZSBnb2luZyB0byBoYXZlIHRvIGNv bnZlcnQgdGhlIEJDRAorCQkJCSAqIGVuY29kaW5nIG9uIHRoZSBjZCB0byB3aGF0IGlzIGV4 cGVjdGVkCisJCQkJICovCisJCQkJdGgtPnN0YXJ0aW5nX3RyYWNrID0KKwkJCQkgICAgYmNk MmJpbih0aC0+c3RhcnRpbmdfdHJhY2spOworCQkJCXRoLT5lbmRpbmdfdHJhY2sgPSBiY2Qy YmluKHRoLT5lbmRpbmdfdHJhY2spOworCQkJfQorCisJCQlpZiAodGgtPnN0YXJ0aW5nX3Ry YWNrID09IExFQURPVVQpIHsKKwkJCQkvKiBMaW51eCBzZXQgYW4gTEJBIHRvIDAnMiIgd2hl biB0aGlzIGlzIG5vdAorCQkJCSAqIGEgbXVsdGlzZXNzaW9uIENELiAqLworCQkJCWlmIChs c2EtPmFkZHJlc3NfZm9ybWF0ID09IENEX01TRl9GT1JNQVQpIHsKKwkJCQkJbHNhLT5hZGRy Lm1zZi5taW51dGUgPSAwOworCQkJCQlsc2EtPmFkZHIubXNmLnNlY29uZCA9IDI7CisJCQkJ CWxzYS0+YWRkci5tc2YuZnJhbWUgPSAwOworCQkJCX0gZWxzZSB7CisJCQkJCWxzYS0+YWRk ci5sYmEgPSAyICogNzUgLSAxNTA7CisJCQkJfQorCisJCQkJZnJlZShkYXRhLCBNX1NDU0lD RCk7CisJCQkJY2FtX3BlcmlwaF91bmxvY2socGVyaXBoKTsKKwkJCQlicmVhazsKKwkJCX0K KworCQkJZXJyb3IgPSBjZHJlYWR0b2MocGVyaXBoLCBsc2EtPmFkZHJlc3NfZm9ybWF0LCAw LAorCQkJCQkgICh1X2ludDhfdCAqKWRhdGEsIHNpemVvZigqZGF0YSksCisJCQkJCSAgLypj b250cm9sKi8xIDw8IDYsCisJCQkJCSAgLypzZW5zZV9mbGFncyovMCk7CisJCQlpZiAoZXJy b3IpIHsKKwkJCQlmcmVlKGRhdGEsIE1fU0NTSUNEKTsKKwkJCQljYW1fcGVyaXBoX3VubG9j ayhwZXJpcGgpOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAobHNhLT5hZGRyZXNzX2Zv cm1hdCA9PSBDRF9NU0ZfRk9STUFUKSB7CisJCQkJYmNvcHkoJmRhdGEtPmVudHJ5LmFkZHIs ICZsc2EtPmFkZHIsCisJCQkJICAgIHNpemVvZihsc2EtPmFkZHIpKTsKKwkJCX0gZWxzZSB7 CisJCQkJbHNhLT5hZGRyLmxiYSA9IG50b2hsKGRhdGEtPmVudHJ5LmFkZHIubGJhKTsKKwkJ CX0KKworCQkJZnJlZShkYXRhLCBNX1NDU0lDRCk7CisJCQljYW1fcGVyaXBoX3VubG9jayhw ZXJpcGgpOworCQl9CisJCWJyZWFrOwogCWNhc2UgQ0RJT0NTRVRQQVRDSDoKIAkJewogCQkJ c3RydWN0IGlvY19wYXRjaCAqYXJnID0gKHN0cnVjdCBpb2NfcGF0Y2ggKilhZGRyOwpAQCAt MjgwMyw3ICsyOTAwLDcgQEAKIAkgKiB3ZSBkb24ndCBwcmludCBhbnl0aGluZyBoZXJlIGlm IHdlIGdldCBhbiBlcnJvciBiYWNrLgogCSAqLwogCWVycm9yID0gY2RyZWFkdG9jKHBlcmlw aCwgMCwgMCwgKHVfaW50OF90ICopdG9jaCwgc2l6ZW9mKCp0b2NoKSwKLQkJCSAgU0ZfTk9f UFJJTlQpOworCQkJICAvKmNvbnRyb2wqLzAsIFNGX05PX1BSSU5UKTsKIAkvKgogCSAqIEVy cm9ycyBpbiByZWFkaW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cyBhcmVuJ3QgZmF0YWwsIHdl IGp1c3QKIAkgKiB3b24ndCBoYXZlIGEgdmFsaWQgdGFibGUgb2YgY29udGVudHMgY2FjaGVk LgpAQCAtMjgyOSw3ICsyOTI2LDcgQEAKIAogCWVycm9yID0gY2RyZWFkdG9jKHBlcmlwaCwg Q0RfTVNGX0ZPUk1BVCwgdG9jaC0+c3RhcnRpbmdfdHJhY2ssCiAJCQkgICh1X2ludDhfdCAq KSZzb2Z0Yy0+dG9jLCB0b2NsZW4gKyBzaXplb2YoKnRvY2gpLAotCQkJICBTRl9OT19QUklO VCk7CisJCQkgIC8qY29udHJvbCovMCwgU0ZfTk9fUFJJTlQpOwogCWlmIChlcnJvciAhPSAw KSB7CiAJCWVycm9yID0gMDsKIAkJYnplcm8oJnNvZnRjLT50b2MsIHNpemVvZihzb2Z0Yy0+ dG9jKSk7CkBAIC0yODQ5LDcgKzI5NDYsNyBAQAogCiAJCWVycm9yID0gY2RyZWFkdG9jKHBl cmlwaCwgQ0RfTVNGX0ZPUk1BVCwgTEVBRE9VVCwgCiAJCQkJICAodV9pbnQ4X3QgKikmbGVh ZG91dCwgc2l6ZW9mKGxlYWRvdXQpLAotCQkJCSAgU0ZfTk9fUFJJTlQpOworCQkJCSAgLypj b250cm9sKi8wLCBTRl9OT19QUklOVCk7CiAJCWlmIChlcnJvciAhPSAwKSB7CiAJCQllcnJv ciA9IDA7CiAJCQlnb3RvIGJhaWxvdXQ7CkBAIC0zMTM5LDcgKzMyMzYsOCBAQAogICovCiBz dGF0aWMgaW50IAogY2RyZWFkdG9jKHN0cnVjdCBjYW1fcGVyaXBoICpwZXJpcGgsIHVfaW50 MzJfdCBtb2RlLCB1X2ludDMyX3Qgc3RhcnQsIAotCSAgdV9pbnQ4X3QgKmRhdGEsIHVfaW50 MzJfdCBsZW4sIHVfaW50MzJfdCBzZW5zZV9mbGFncykKKwkgIHVfaW50OF90ICpkYXRhLCB1 X2ludDMyX3QgbGVuLCB1X2ludDhfdCBjb250cm9sLAorCSAgdV9pbnQzMl90IHNlbnNlX2Zs YWdzKQogewogCXN0cnVjdCBzY3NpX3JlYWRfdG9jICpzY3NpX2NtZDsKIAl1X2ludDMyX3Qg bnRvYzsKQEAgLTMxNzYsNiArMzI3NCw3IEBACiAJc2NzaV9jbWQtPmRhdGFfbGVuWzFdID0g KG50b2MpICYgMHhmZjsKIAogCXNjc2lfY21kLT5vcF9jb2RlID0gUkVBRF9UT0M7CisJc2Nz aV9jbWQtPmNvbnRyb2wgPSBjb250cm9sOwogCiAJZXJyb3IgPSBjZHJ1bmNjYihjY2IsIGNk ZXJyb3IsIC8qY2FtX2ZsYWdzKi9DQU1fUkVUUllfU0VMVE8sCiAJCQkgLypzZW5zZV9mbGFn cyovU0ZfUkVUUllfVUEgfCBzZW5zZV9mbGFncyk7CkluZGV4OiBzeXMvZGV2L2F0YS9hdGFw aS1jZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvYXRhL2F0YXBpLWNkLmMJKHJldmlz aW9uIDE5MDQ2MykKKysrIHN5cy9kZXYvYXRhL2F0YXBpLWNkLmMJKHdvcmtpbmcgY29weSkK QEAgLTQwMCw2ICs0MDAsMjUgQEAKIAl9CiAJYnJlYWs7CiAKKyAgICBjYXNlIENESU9SRUFE TEFTVFNFU1NJT05BRERSOgorCXsKKwkgICAgc3RydWN0IGlvY19yZWFkX2xhc3Rfc2Vzc2lv bl9hZGRyICpsc2EgPQorCQkoc3RydWN0IGlvY19yZWFkX2xhc3Rfc2Vzc2lvbl9hZGRyICop YWRkcjsKKworCSAgICBpZiAoIWNkcC0+dG9jLmhkci5lbmRpbmdfdHJhY2spIHsKKwkJZXJy b3IgPSBFSU87CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgaWYgKGxzYS0+YWRkcmVzc19m b3JtYXQgPT0gQ0RfTVNGX0ZPUk1BVCkgeworCQlsYmEybXNmKGNkcC0+bGFzdF9zZXNzaW9u X2xiYSwgJmxzYS0+YWRkci5tc2YubWludXRlLAorCQkgICAgJmxzYS0+YWRkci5tc2Yuc2Vj b25kLCAmbHNhLT5hZGRyLm1zZi5mcmFtZSk7CisJICAgIH0gZWxzZSB7CisJCWxzYS0+YWRk ci5sYmEgPSBjZHAtPmxhc3Rfc2Vzc2lvbl9sYmE7CisJICAgIH0KKwl9CisJYnJlYWs7CisK ICNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDYwMDAwOAogICAgIGNhc2UgQ0RJT0NSRUFEU1VC Q0hBTk5FTF9TWVNTUEFDRToKIAlub2NvcHlvdXQgPSAxOwpAQCAtMTAwNiw2ICsxMDI1LDM5 IEBACiAJY2RwLT5wcFt0cmFja10gPSBOVUxMOwogICAgIH0KIAorICAgIC8qCisgICAgICog QW4gIkVuaGFuY2VkIENEIiAob3IgIkV4dHJhIENEIikgaXMgYSBDRCB3aXRoIGF1ZGlvIHRy YWNrcywgdGhlbgorICAgICAqIGRhdGEgdHJhY2tzLiBBdWRpbyB0cmFja3MgYXJlIGluIHRo ZSBmaXJzdCBzZXNzaW9uLCB3aGlsZSBkYXRhCisgICAgICogdHJhY2tzIGFyZSBpbiB0aGUg c2Vjb25kIHNlc3Npb24uIEJlY2F1c2Ugb2YgdGhlIHNwYWNlIHRha2VuIGJ5CisgICAgICog dGhlIGZpcnN0IHNlc3Npb24ncyBsZWFkLW91dCBhbmQgdGhlIHNlY29uZCBzZXNzaW9uJ3Mg bGVhZC1pbiwKKyAgICAgKiB0aGUgZHVyYXRpb24gb2YgdGhlIGxhc3QgYXVkaW8gdHJhY2sg Y2FuJ3QgYmUgZGV0ZXJtaW5lZCB3aXRoIHRoZQorICAgICAqIGFkZHJlc3Mgb2YgdGhlIGRh dGEgdHJhY2suIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBnZXQgdGhlIGFkZHJlc3MKKyAgICAg KiBvZiB0aGUgc2Vjb25kIChhbmQgbGFzdCkgc2Vzc2lvbiBmb3IgdGhpcyBwdXJwb3NlLgor ICAgICAqLworICAgIGlmIChjZHAtPnRvYy5oZHIuc3RhcnRpbmdfdHJhY2sgIT0gMTcwKSB7 CisJc3RydWN0IHRvYyBsYXN0X3RvYzsKKworCWxlbiA9IHNpemVvZihzdHJ1Y3QgaW9jX3Rv Y19oZWFkZXIpICsgc2l6ZW9mKHN0cnVjdCBjZF90b2NfZW50cnkpOworCWJ6ZXJvKGNjYiwg c2l6ZW9mKGNjYikpOworCWNjYlswXSA9IEFUQVBJX1JFQURfVE9DOworCWNjYls3XSA9IGxl biA+PiA4OworCWNjYls4XSA9IGxlbjsKKwkvKiBTZXQgdGhpcyBmbGFnIHRvIGFzayBmb3Ig c2Vzc2lvbnMgaW5mb3JtYXRpb25zIGluc3RlYWQgb2YgdHJhY2tzCisJICogaW5mb3JtYXRp b25zLiAqLworCWNjYls5XSA9IDEgPDwgNjsKKworCWlmIChhdGFfYXRhcGljbWQoZGV2LCBj Y2IsIChjYWRkcl90KSZsYXN0X3RvYywgbGVuLAorCSAgICBBVEFfUl9SRUFEIHwgQVRBX1Jf UVVJRVQsIDMwKSkgeworCSAgICBiemVybygmY2RwLT50b2MsIHNpemVvZihjZHAtPnRvYykp OworCSAgICByZXR1cm47CisJfQorCisJY2RwLT5sYXN0X3Nlc3Npb25fbGJhID0gbnRvaGwo bGFzdF90b2MudGFiWzBdLmFkZHIubGJhKTsKKyAgICB9IGVsc2UgeworCS8qIExpbnV4IHNl dCBhbiBMQkEgdG8gMCcyIiB3aGVuIHRoaXMgaXMgbm90IGEgbXVsdGlzZXNzaW9uIENELiAq LworCWNkcC0+bGFzdF9zZXNzaW9uX2xiYSA9IG1zZjJsYmEoMCwgMiwgMCk7CisgICAgfQor CiAjaWZkZWYgQUNEX0RFQlVHCiAgICAgaWYgKGNkcC0+ZGlza19zaXplICYmIGNkcC0+dG9j Lmhkci5lbmRpbmdfdHJhY2spIHsKIAlkZXZpY2VfcHJpbnRmKGRldiwgIiglZCBzZWN0b3Jz ICglZCBieXRlcykpLCAlZCB0cmFja3MgIiwgCkluZGV4OiBzeXMvZGV2L2F0YS9hdGFwaS1j ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvYXRhL2F0YXBpLWNkLmgJKHJldmlzaW9u IDE5MDQ2MykKKysrIHN5cy9kZXYvYXRhL2F0YXBpLWNkLmgJKHdvcmtpbmcgY29weSkKQEAg LTMxMiw0ICszMTIsNyBAQAogICAgIHVfaW50MzJfdCAgICAgICAgICAgICAgICAgICBpb21h eDsgICAgICAgICAgLyogTWF4IEkvTyByZXF1ZXN0IChieXRlcykgKi8KICAgICBzdHJ1Y3Qg Z19nZW9tICAgICAgICAgICAgICAgKmdwOyAgICAgICAgICAgIC8qIGdlb20gaW5zdGFuY2Ug Ki8KICAgICBzdHJ1Y3QgZ19wcm92aWRlciAgICAgICAgICAgKnBwW01BWFRSSysxXTsgIC8q IHByb3ZpZGVycyAqLworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3Nl c3Npb25fbGJhOyAvKiBsYXN0IHNlc3Npb24gYWRkcmVzcyAoc2VlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENESU9SRUFETEFTVFNF U1NJT05BRERSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlvY3RsKSAqLwogfTsKSW5kZXg6IHN5cy9zeXMvY2Rpby5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHN5cy9zeXMvY2Rpby5oCShyZXZpc2lvbiAxOTA0NjMpCisrKyBzeXMvc3lz L2NkaW8uaAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDQgKzI4MSwxMiBAQAogICovCiAjZGVm aW5lIENESU9DUkVBRFNVQkNIQU5ORUxfU1lTU1BBQ0UgX0lPV1IoJ2MnLCAzMSwgc3RydWN0 IGlvY19yZWFkX3N1YmNoYW5uZWwpCiAKKworc3RydWN0IGlvY19yZWFkX2xhc3Rfc2Vzc2lv bl9hZGRyIHsKKwl1X2NoYXIJYWRkcmVzc19mb3JtYXQ7CisJdW5pb24JbXNmX2xiYSBhZGRy OworfTsKKyNkZWZpbmUgQ0RJT1JFQURMQVNUU0VTU0lPTkFERFIJCQkJCQlcCisgICAgX0lP V1IoJ2MnLCAzMiwgc3RydWN0IGlvY19yZWFkX2xhc3Rfc2Vzc2lvbl9hZGRyKQorCiAjZW5k aWYgLyogIV9TWVNfQ0RJT19IXyAqLwo= --------------050509060905070000010304--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49DDF942.9040808>