01 Dec, 2018

1 commit

  • commit 50b977481fce90aa5fbda55e330b9d722733e358 upstream.

    The EVM signature includes the inode number and (optionally) the
    filesystem UUID, making it impractical to ship EVM signatures in
    packages. This patch adds a new portable format intended to allow
    distributions to include EVM signatures. It is identical to the existing
    format but hardcodes the inode and generation numbers to 0 and does not
    include the filesystem UUID even if the kernel is configured to do so.

    Removing the inode means that the metadata and signature from one file
    could be copied to another file without invalidating it. This is avoided
    by ensuring that an IMA xattr is present during EVM validation.

    Portable signatures are intended to be immutable - ie, they will never
    be transformed into HMACs.

    Based on earlier work by Dmitry Kasatkin and Mikhail Kurinnoi.

    Signed-off-by: Matthew Garrett
    Cc: Dmitry Kasatkin
    Cc: Mikhail Kurinnoi
    Signed-off-by: Mimi Zohar
    Cc: Aditya Kali
    Signed-off-by: Greg Kroah-Hartman

    Matthew Garrett
     

26 Sep, 2018

1 commit

  • [ Upstream commit e2861fa71641c6414831d628a1f4f793b6562580 ]

    When EVM attempts to appraise a file signed with a crypto algorithm the
    kernel doesn't have support for, it will cause the kernel to trigger a
    module load. If the EVM policy includes appraisal of kernel modules this
    will in turn call back into EVM - since EVM is holding a lock until the
    crypto initialisation is complete, this triggers a deadlock. Add a
    CRYPTO_NOLOAD flag and skip module loading if it's set, and add that flag
    in the EVM case in order to fail gracefully with an error message
    instead of deadlocking.

    Signed-off-by: Matthew Garrett
    Acked-by: Herbert Xu
    Signed-off-by: Mimi Zohar
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Matthew Garrett
     

05 Jun, 2017

1 commit

  • For some file systems we still memcpy into it, but in various places this
    already allows us to use the proper uuid helpers. More to come..

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Amir Goldstein
    Acked-by: Mimi Zohar  (Changes to IMA/EVM)
    Reviewed-by: Andy Shevchenko

    Christoph Hellwig
     

02 Mar, 2017

1 commit


15 Dec, 2016

1 commit

  • Pull namespace updates from Eric Biederman:
    "After a lot of discussion and work we have finally reachanged a basic
    understanding of what is necessary to make unprivileged mounts safe in
    the presence of EVM and IMA xattrs which the last commit in this
    series reflects. While technically it is a revert the comments it adds
    are important for people not getting confused in the future. Clearing
    up that confusion allows us to seriously work on unprivileged mounts
    of fuse in the next development cycle.

    The rest of the fixes in this set are in the intersection of user
    namespaces, ptrace, and exec. I started with the first fix which
    started a feedback cycle of finding additional issues during review
    and fixing them. Culiminating in a fix for a bug that has been present
    since at least Linux v1.0.

    Potentially these fixes were candidates for being merged during the rc
    cycle, and are certainly backport candidates but enough little things
    turned up during review and testing that I decided they should be
    handled as part of the normal development process just to be certain
    there were not any great surprises when it came time to backport some
    of these fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
    Revert "evm: Translate user/group ids relative to s_user_ns when computing HMAC"
    exec: Ensure mm->user_ns contains the execed files
    ptrace: Don't allow accessing an undumpable mm
    ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
    mm: Add a user_ns owner to mm_struct and fix ptrace permission checks

    Linus Torvalds
     

03 Dec, 2016

1 commit

  • This reverts commit 0b3c9761d1e405514a551ed24d3ea89aea26ce14.

    Seth Forshee writes:
    > All right, I think 0b3c9761d1e405514a551ed24d3ea89aea26ce14 should be
    > reverted then. EVM is a machine-local integrity mechanism, and so it
    > makes sense that the signature would be based on the kernel's notion of
    > the uid and not the filesystem's.

    I added a commment explaining why the EVM hmac needs to be in the
    kernel's notion of uid and gid, not the filesystems to prevent
    remounting the filesystem and gaining unwaranted trust in files.

    Acked-by: Seth Forshee
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

14 Nov, 2016

1 commit

  • In general the handling of IMA/EVM xattrs is good, but I found
    a few locations where either the xattr size or the value of the
    type field in the xattr are not checked. Add a few simple checks
    to these locations to prevent malformed or malicious xattrs from
    causing problems.

    Signed-off-by: Seth Forshee
    Signed-off-by: Mimi Zohar

    Seth Forshee
     

08 Oct, 2016

1 commit

  • Right now, various places in the kernel check for the existence of
    getxattr, setxattr, and removexattr inode operations and directly call
    those operations. Switch to helper functions and test for the IOP_XATTR
    flag instead.

    Signed-off-by: Andreas Gruenbacher
    Acked-by: James Morris
    Signed-off-by: Al Viro

    Andreas Gruenbacher
     

06 Jul, 2016

1 commit


11 Apr, 2016

2 commits


12 Feb, 2016

1 commit

  • This patch fixes vulnerability CVE-2016-2085. The problem exists
    because the vm_verify_hmac() function includes a use of memcmp().
    Unfortunately, this allows timing side channel attacks; specifically
    a MAC forgery complexity drop from 2^128 to 2^12. This patch changes
    the memcmp() to the cryptographically safe crypto_memneq().

    Reported-by: Xiaofei Rex Guo
    Signed-off-by: Ryan Ware
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar
    Signed-off-by: James Morris

    Ryan Ware
     

15 Dec, 2015

5 commits

  • The newly added EVM_LOAD_X509 code can be configured even if
    CONFIG_EVM is disabled, but that causes a link error:

    security/built-in.o: In function `integrity_load_keys':
    digsig_asymmetric.c:(.init.text+0x400): undefined reference to `evm_load_x509'

    This adds a Kconfig dependency to ensure it is only enabled when
    CONFIG_EVM is set as well.

    Signed-off-by: Arnd Bergmann
    Fixes: 2ce523eb8976 ("evm: load x509 certificate from the kernel")
    Signed-off-by: Mimi Zohar

    Arnd Bergmann
     
  • The EVM verification status is cached in iint->evm_status and if it
    was successful, never re-verified again when IMA passes the 'iint' to
    evm_verifyxattr().

    When file attributes or extended attributes change, we may wish to
    re-verify EVM integrity as well. For example, after setting a digital
    signature we may need to re-verify the signature and update the
    iint->flags that there is an EVM signature.

    This patch enables that by resetting evm_status to INTEGRITY_UKNOWN
    state.

    Changes in v2:
    * Flag setting moved to EVM layer

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • A crypto HW kernel module can possibly initialize the EVM key from the
    kernel __init code to enable EVM before calling the 'init' process.
    This patch provides a function evm_set_key() to set the EVM key
    directly without using the KEY subsystem.

    Changes in v4:
    * kernel-doc style for evm_set_key

    Changes in v3:
    * error reporting moved to evm_set_key
    * EVM_INIT_HMAC moved to evm_set_key
    * added bitop to prevent key setting race

    Changes in v2:
    * use size_t for key size instead of signed int
    * provide EVM_MAX_KEY_SIZE macro in
    * provide EVM_MIN_KEY_SIZE macro in

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • In order to enable EVM before starting the 'init' process,
    evm_initialized needs to be non-zero. Previously non-zero indicated
    that the HMAC key was loaded. When EVM loads the X509 before calling
    'init', with this patch it is now possible to enable EVM to start
    signature based verification.

    This patch defines bits to enable EVM if a key of any type is loaded.

    Changes in v3:
    * print error message if key is not set

    Changes in v2:
    * EVM_STATE_KEY_SET replaced by EVM_INIT_HMAC
    * EVM_STATE_X509_SET replaced by EVM_INIT_X509

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • This patch defines a configuration option and the evm_load_x509() hook
    to load an X509 certificate onto the EVM trusted kernel keyring.

    Changes in v4:
    * Patch description updated

    Changes in v3:
    * Removed EVM_X509_PATH definition. CONFIG_EVM_X509_PATH is used
    directly.

    Changes in v2:
    * default key patch changed to /etc/keys

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

24 Nov, 2015

1 commit

  • Require all keys added to the EVM keyring be signed by an
    existing trusted key on the system trusted keyring.

    This patch also switches IMA to use integrity_init_keyring().

    Changes in v3:
    * Added 'init_keyring' config based variable to skip initializing
    keyring instead of using __integrity_init_keyring() wrapper.
    * Added dependency back to CONFIG_IMA_TRUSTED_KEYRING

    Changes in v2:
    * Replace CONFIG_EVM_TRUSTED_KEYRING with IMA and EVM common
    CONFIG_INTEGRITY_TRUSTED_KEYRING configuration option
    * Deprecate CONFIG_IMA_TRUSTED_KEYRING but keep it for config
    file compatibility. (Mimi Zohar)

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

21 Oct, 2015

1 commit

  • Merge the type-specific data with the payload data into one four-word chunk
    as it seems pointless to keep them separate.

    Use user_key_payload() for accessing the payloads of overloaded
    user-defined keys.

    Signed-off-by: David Howells
    cc: linux-cifs@vger.kernel.org
    cc: ecryptfs@vger.kernel.org
    cc: linux-ext4@vger.kernel.org
    cc: linux-f2fs-devel@lists.sourceforge.net
    cc: linux-nfs@vger.kernel.org
    cc: ceph-devel@vger.kernel.org
    cc: linux-ima-devel@lists.sourceforge.net

    David Howells
     

22 May, 2015

2 commits

  • EVM needs to be atomically updated when removing xattrs.
    Otherwise concurrent EVM verification may fail in between.
    This patch fixes by moving i_mutex unlocking after calling
    EVM hook. fsnotify_xattr() is also now called while locked
    the same way as it is done in __vfs_setxattr_noperm.

    Changelog:
    - remove unused 'inode' variable.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • To prevent offline stripping of existing file xattrs and relabeling of
    them at runtime, EVM allows only newly created files to be labeled. As
    pseudo filesystems are not persistent, stripping of xattrs is not a
    concern.

    Some LSMs defer file labeling on pseudo filesystems. This patch
    permits the labeling of existing files on pseudo files systems.

    Signed-off-by: Mimi Zohar

    Mimi Zohar
     

16 Apr, 2015

1 commit


07 Jan, 2015

1 commit


15 Dec, 2014

1 commit

  • Pull security layer updates from James Morris:
    "In terms of changes, there's general maintenance to the Smack,
    SELinux, and integrity code.

    The IMA code adds a new kconfig option, IMA_APPRAISE_SIGNED_INIT,
    which allows IMA appraisal to require signatures. Support for reading
    keys from rootfs before init is call is also added"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (23 commits)
    selinux: Remove security_ops extern
    security: smack: fix out-of-bounds access in smk_parse_smack()
    VFS: refactor vfs_read()
    ima: require signature based appraisal
    integrity: provide a hook to load keys when rootfs is ready
    ima: load x509 certificate from the kernel
    integrity: provide a function to load x509 certificate from the kernel
    integrity: define a new function integrity_read_file()
    Security: smack: replace kzalloc with kmem_cache for inode_smack
    Smack: Lock mode for the floor and hat labels
    ima: added support for new kernel cmdline parameter ima_template_fmt
    ima: allocate field pointers array on demand in template_desc_init_fields()
    ima: don't allocate a copy of template_fmt in template_desc_init_fields()
    ima: display template format in meas. list if template name length is zero
    ima: added error messages to template-related functions
    ima: use atomic bit operations to protect policy update interface
    ima: ignore empty and with whitespaces policy lines
    ima: no need to allocate entry for comment
    ima: report policy load status
    ima: use path names cache
    ...

    Linus Torvalds
     

28 Oct, 2014

1 commit

  • evm_inode_setxattr() can be called with no value. The function does not
    check the length so that following command can be used to produce the
    kernel oops: setfattr -n security.evm FOO. This patch fixes it.

    Changes in v3:
    * there is no reason to return different error codes for EVM_XATTR_HMAC
    and non EVM_XATTR_HMAC. Remove unnecessary test then.

    Changes in v2:
    * testing for validity of xattr type

    [ 1106.396921] BUG: unable to handle kernel NULL pointer dereference at (null)
    [ 1106.398192] IP: [] evm_inode_setxattr+0x2a/0x48
    [ 1106.399244] PGD 29048067 PUD 290d7067 PMD 0
    [ 1106.399953] Oops: 0000 [#1] SMP
    [ 1106.400020] Modules linked in: bridge stp llc evdev serio_raw i2c_piix4 button fuse
    [ 1106.400020] CPU: 0 PID: 3635 Comm: setxattr Not tainted 3.16.0-kds+ #2936
    [ 1106.400020] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    [ 1106.400020] task: ffff8800291a0000 ti: ffff88002917c000 task.ti: ffff88002917c000
    [ 1106.400020] RIP: 0010:[] [] evm_inode_setxattr+0x2a/0x48
    [ 1106.400020] RSP: 0018:ffff88002917fd50 EFLAGS: 00010246
    [ 1106.400020] RAX: 0000000000000000 RBX: ffff88002917fdf8 RCX: 0000000000000000
    [ 1106.400020] RDX: 0000000000000000 RSI: ffffffff818136d3 RDI: ffff88002917fdf8
    [ 1106.400020] RBP: ffff88002917fd68 R08: 0000000000000000 R09: 00000000003ec1df
    [ 1106.400020] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8800438a0a00
    [ 1106.400020] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [ 1106.400020] FS: 00007f7dfa7d7740(0000) GS:ffff88005da00000(0000) knlGS:0000000000000000
    [ 1106.400020] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1106.400020] CR2: 0000000000000000 CR3: 000000003763e000 CR4: 00000000000006f0
    [ 1106.400020] Stack:
    [ 1106.400020] ffff8800438a0a00 ffff88002917fdf8 0000000000000000 ffff88002917fd98
    [ 1106.400020] ffffffff812a1030 ffff8800438a0a00 ffff88002917fdf8 0000000000000000
    [ 1106.400020] 0000000000000000 ffff88002917fde0 ffffffff8116d08a ffff88002917fdc8
    [ 1106.400020] Call Trace:
    [ 1106.400020] [] security_inode_setxattr+0x5d/0x6a
    [ 1106.400020] [] vfs_setxattr+0x6b/0x9f
    [ 1106.400020] [] setxattr+0x122/0x16c
    [ 1106.400020] [] ? mnt_want_write+0x21/0x45
    [ 1106.400020] [] ? __sb_start_write+0x10f/0x143
    [ 1106.400020] [] ? mnt_want_write+0x21/0x45
    [ 1106.400020] [] ? __mnt_want_write+0x48/0x4f
    [ 1106.400020] [] SyS_setxattr+0x6e/0xb0
    [ 1106.400020] [] system_call_fastpath+0x16/0x1b
    [ 1106.400020] Code: c3 0f 1f 44 00 00 55 48 89 e5 41 55 49 89 d5 41 54 49 89 fc 53 48 89 f3 48 c7 c6 d3 36 81 81 48 89 df e8 18 22 04 00 85 c0 75 07 80 7d 00 02 74 0d 48 89 de 4c 89 e7 e8 5a fe ff ff eb 03 83
    [ 1106.400020] RIP [] evm_inode_setxattr+0x2a/0x48
    [ 1106.400020] RSP
    [ 1106.400020] CR2: 0000000000000000
    [ 1106.428061] ---[ end trace ae08331628ba3050 ]---

    Reported-by: Jan Kara
    Signed-off-by: Dmitry Kasatkin
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

08 Oct, 2014

1 commit

  • If filesystem is mounted read-only or file is immutable, updating
    xattr will fail. This is a usual case during early boot until
    filesystem is remount read-write. This patch verifies conditions
    to skip unnecessary attempt to calculate HMAC and set xattr.

    Changes in v2:
    * indention changed according to Lindent (requested by Mimi)

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

09 Sep, 2014

3 commits

  • The integrity subsystem has lots of options and takes more than
    half of the security menu. This patch consolidates the options
    under "integrity", which are hidden if not enabled. This change
    does not affect existing configurations. Re-configuration is not
    needed.

    Changes v4:
    - no need to change "integrity subsystem" to menuconfig as
    options are hidden, when not enabled. (Mimi)
    - add INTEGRITY Kconfig help description

    Changes v3:
    - dependency to INTEGRITY removed when behind 'if INTEGRITY'

    Changes v2:
    - previous patch moved integrity out of the 'security' menu.
    This version keeps integrity as a security option (Mimi).

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Unless an LSM labels a file during d_instantiate(), newly created
    files are not labeled with an initial security.evm xattr, until
    the file closes. EVM, before allowing a protected, security xattr
    to be written, verifies the existing 'security.evm' value is good.
    For newly created files without a security.evm label, this
    verification prevents writing any protected, security xattrs,
    until the file closes.

    Following is the example when this happens:
    fd = open("foo", O_CREAT | O_WRONLY, 0644);
    setxattr("foo", "security.SMACK64", value, sizeof(value), 0);
    close(fd);

    While INTEGRITY_NOXATTRS status is handled in other places, such
    as evm_inode_setattr(), it does not handle it in all cases in
    evm_protect_xattr(). By limiting the use of INTEGRITY_NOXATTRS to
    newly created files, we can now allow setting "protected" xattrs.

    Changelog:
    - limit the use of INTEGRITY_NOXATTRS to IMA identified new files

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar
    Cc: 3.14+

    Dmitry Kasatkin
     
  • This patch fixes a bug, where evm_verify_hmac() returns INTEGRITY_PASS
    if inode->i_op->getxattr() returns an error in evm_find_protected_xattrs.

    Signed-off-by: Dmitry Kasatkin

    Dmitry Kasatkin
     

03 Sep, 2014

1 commit

  • This patch fixes checkpatch 'return' warnings introduced with commit
    9819cf2 "checkpatch: warn on unnecessary void function return statements".

    Use scripts/checkpatch.pl --file security/integrity/evm/evm_main.c
    to produce the warnings.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

13 Jun, 2014

3 commits

  • Calculating the 'security.evm' HMAC value requires access to the
    EVM encrypted key. Only the kernel should have access to it. This
    patch prevents userspace tools(eg. setfattr, cp --preserve=xattr)
    from setting/modifying the 'security.evm' HMAC value directly.

    Signed-off-by: Mimi Zohar
    Cc:

    Mimi Zohar
     
  • Newer versions of SMACK introduced following security xattrs:
    SMACK64EXEC, SMACK64TRANSMUTE and SMACK64MMAP.

    To protect these xattrs, this patch includes them in the HMAC
    calculation. However, for backwards compatibility with existing
    labeled filesystems, including these xattrs needs to be
    configurable.

    Changelog:
    - Add SMACK dependency on new option (Mimi)

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Using HMAC version limits the posibility to arbitrarily add new
    attributes such as SMACK64EXEC to the hmac calculation.

    This patch replaces hmac version with attribute mask.
    Desired attributes can be enabled with configuration parameter.
    It allows to build kernels which works with previously labeled
    filesystems.

    Currently supported attribute is 'fsuuid' which is equivalent of
    the former version 2.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     

13 Apr, 2014

1 commit

  • Pull vfs updates from Al Viro:
    "The first vfs pile, with deep apologies for being very late in this
    window.

    Assorted cleanups and fixes, plus a large preparatory part of iov_iter
    work. There's a lot more of that, but it'll probably go into the next
    merge window - it *does* shape up nicely, removes a lot of
    boilerplate, gets rid of locking inconsistencie between aio_write and
    splice_write and I hope to get Kent's direct-io rewrite merged into
    the same queue, but some of the stuff after this point is having
    (mostly trivial) conflicts with the things already merged into
    mainline and with some I want more testing.

    This one passes LTP and xfstests without regressions, in addition to
    usual beating. BTW, readahead02 in ltp syscalls testsuite has started
    giving failures since "mm/readahead.c: fix readahead failure for
    memoryless NUMA nodes and limit readahead pages" - might be a false
    positive, might be a real regression..."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)
    missing bits of "splice: fix racy pipe->buffers uses"
    cifs: fix the race in cifs_writev()
    ceph_sync_{,direct_}write: fix an oops on ceph_osdc_new_request() failure
    kill generic_file_buffered_write()
    ocfs2_file_aio_write(): switch to generic_perform_write()
    ceph_aio_write(): switch to generic_perform_write()
    xfs_file_buffered_aio_write(): switch to generic_perform_write()
    export generic_perform_write(), start getting rid of generic_file_buffer_write()
    generic_file_direct_write(): get rid of ppos argument
    btrfs_file_aio_write(): get rid of ppos
    kill the 5th argument of generic_file_buffered_write()
    kill the 4th argument of __generic_file_aio_write()
    lustre: don't open-code kernel_recvmsg()
    ocfs2: don't open-code kernel_recvmsg()
    drbd: don't open-code kernel_recvmsg()
    constify blk_rq_map_user_iov() and friends
    lustre: switch to kernel_sendmsg()
    ocfs2: don't open-code kernel_sendmsg()
    take iov_iter stuff to mm/iov_iter.c
    process_vm_access: tidy up a bit
    ...

    Linus Torvalds
     

02 Apr, 2014

1 commit


08 Mar, 2014

4 commits

  • If keys are not enabled, EVM is not visible in the configuration menu.
    It may be difficult to figure out what to do unless you really know.
    Other subsystems as NFS, CIFS select keys automatically. This patch does
    the same.

    This patch also removes '(TRUSTED_KEYS=y || TRUSTED_KEYS=n)' dependency,
    which is unnecessary. EVM does not depend on trusted keys, but on
    encrypted keys. evm.h provides compile time dependency.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • EVM does not use MD5 HMAC. Selection of CRYPTO_MD5 can be safely removed.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Between checkpatch changes (eg. sizeof) and inconsistencies between
    Lindent and checkpatch, unfixed checkpatch errors make it difficult
    to see new errors. This patch fixes them. Some lines with over 80 chars
    remained unchanged to improve code readability.

    The "extern" keyword is removed from internal evm.h to make it consistent
    with internal ima.h.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Convert printks to pr_.
    Add pr_fmt.
    Remove embedded prefixes.

    Signed-off-by: Joe Perches
    Signed-off-by: Mimi Zohar

    Joe Perches
     

26 Oct, 2013

1 commit