lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 26 Nov 2011 11:00:11 +0100 From: Corentin Chary <corentincj@...aif.net> To: platform-driver-x86@...r.kernel.org Cc: Greg Kroah-Hartman <gregkh@...e.de>, Matthew Garrett <mjg@...hat.com>, Corentin Chary <corentincj@...aif.net>, linux-kernel@...r.kernel.org Subject: [PATCH v2 14/16] samsung-laptop: dump model and version informations We still need to figure out exactly what each of different fields represent, but they contain at least model and version informations. Signed-off-by: Corentin Chary <corentincj@...aif.net> --- drivers/platform/x86/samsung-laptop.c | 42 +++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c index 5e8bca1..487a1f0 100644 --- a/drivers/platform/x86/samsung-laptop.c +++ b/drivers/platform/x86/samsung-laptop.c @@ -303,6 +303,7 @@ struct samsung_laptop_debug { struct debugfs_blob_wrapper f0000_wrapper; struct debugfs_blob_wrapper data_wrapper; + struct debugfs_blob_wrapper sdiag_wrapper; }; struct samsung_laptop; @@ -337,6 +338,8 @@ struct samsung_laptop { bool handle_backlight; bool has_stepping_quirk; + + char sdiag[64]; }; @@ -1164,6 +1167,9 @@ static int samsung_debugfs_init(struct samsung_laptop *samsung) samsung->debug.data_wrapper.data = &samsung->debug.data; samsung->debug.data_wrapper.size = sizeof(samsung->debug.data); + samsung->debug.sdiag_wrapper.data = samsung->sdiag; + samsung->debug.sdiag_wrapper.size = strlen(samsung->sdiag); + dent = debugfs_create_u16("command", S_IRUGO | S_IWUSR, samsung->debug.root, &samsung->debug.command); if (!dent) @@ -1207,6 +1213,12 @@ static int samsung_debugfs_init(struct samsung_laptop *samsung) if (!dent) goto error_debugfs; + dent = debugfs_create_blob("sdiag", S_IRUGO | S_IWUSR, + samsung->debug.root, + &samsung->debug.sdiag_wrapper); + if (!dent) + goto error_debugfs; + return 0; error_debugfs: @@ -1259,6 +1271,34 @@ static __init void samsung_sabi_infos(struct samsung_laptop *samsung, int loca, printk(KERN_DEBUG " SABI pointer = 0x%08x\n", ifaceP); } +static void __init samsung_sabi_diag(struct samsung_laptop *samsung) +{ + int loca = find_signature(samsung->f0000_segment, "SDiaG@"); + int i; + + if (loca == 0xffff) + return ; + + /* Example: + * Ident: @SDiaG@...XX-N90X3A/966-SEC-07HL-S90X3A + * + * Product name: 90X3A + * BIOS Version: 07HL + */ + loca += 1; + for (i = 0; loca < 0xffff && i < sizeof(samsung->sdiag) - 1; loca++) { + char temp = readb(samsung->f0000_segment + loca); + + if (isalnum(temp) || temp == '/' || temp == '-') + samsung->sdiag[i++] = temp; + else + break ; + } + + if (debug && samsung->sdiag[0]) + pr_info("sdiag: %s", samsung->sdiag); +} + static int __init samsung_sabi_init(struct samsung_laptop *samsung) { const struct sabi_config *config = NULL; @@ -1276,6 +1316,8 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung) goto exit; } + samsung_sabi_diag(samsung); + /* Try to find one of the signatures in memory to find the header */ for (i = 0; sabi_configs[i].test_string != 0; ++i) { samsung->config = &sabi_configs[i]; -- 1.7.5.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists