1. 29 3月, 2015 1 次提交
  2. 28 3月, 2015 5 次提交
  3. 18 3月, 2015 1 次提交
  4. 10 3月, 2015 1 次提交
  5. 25 2月, 2015 1 次提交
  6. 23 2月, 2015 4 次提交
    • C
      ARM: 8304/1: Respect NO_KERNEL_MAPPING when we don't have an IOMMU · 6e8266e3
      Carlo Caione 提交于
      Even without an iommu, NO_KERNEL_MAPPING is still convenient to save on
      kernel address space in places where we don't need a kernel mapping.
      Implement support for it in the two places where we're creating an
      expensive mapping.
      
      __alloc_from_pool uses an internal pool from which we already have
      virtual addresses, so it's not relevant, and __alloc_simple_buffer uses
      alloc_pages, which will always return a lowmem page, which is already
      mapped into kernel space, so we can't prevent a mapping for it in that
      case.
      Signed-off-by: NJasper St. Pierre <jstpierre@mecheye.net>
      Signed-off-by: NCarlo Caione <carlo@caione.org>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Reviewed-by: NDaniel Drake <dsd@endlessm.com>
      Acked-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6e8266e3
    • L
      ARM: 8293/1: kernel: fix pci_mmap_page_range() offset calculation · 415ae101
      Lorenzo Pieralisi 提交于
      The pci_mmap_page_range() API should be written to expect offset
      values representing PCI memory resource addresses as seen by user
      space, through the pci_resource_to_user() API.
      
      ARM relies on the standard implementation of pci_resource_to_user()
      which actually is an identity map and exports to user space
      PCI memory resources as they are stored in PCI devices resources
      structures, which represent CPU physical addresses (fixed-up using
      BUS to CPU address conversions) not PCI bus addresses.
      
      Therefore, on ARM platforms where the mapping between CPU and BUS
      address is not a 1:1 the current pci_mmap_page_range() implementation is
      erroneous, in that an additional shift is applied to an already fixed-up
      offset passed from userspace.
      
      Hence, this patch removes the mem_offset from the pgoff calculation
      since the offset as passed from user space already represents the CPU
      physical address corresponding to the resource to be mapped, ie no
      additional offset should be applied.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      415ae101
    • A
      ARM: 8219/1: handle interworking and out-of-range relocations separately · 2b8514d0
      Ard Biesheuvel 提交于
      Currently, interworking calls on module boundaries are not supported,
      and are handled by the same error handling code path as non-interworking
      calls whose targets are simply out of range.
      
      Before modifying the handling of those out-of-range jump and call
      relocations in a subsequent patch, move the handling of interworking
      restrictions out of it.
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      2b8514d0
    • D
      VFS: (Scripted) Convert S_ISLNK/DIR/REG(dentry->d_inode) to d_is_*(dentry) · e36cb0b8
      David Howells 提交于
      Convert the following where appropriate:
      
       (1) S_ISLNK(dentry->d_inode) to d_is_symlink(dentry).
      
       (2) S_ISREG(dentry->d_inode) to d_is_reg(dentry).
      
       (3) S_ISDIR(dentry->d_inode) to d_is_dir(dentry).  This is actually more
           complicated than it appears as some calls should be converted to
           d_can_lookup() instead.  The difference is whether the directory in
           question is a real dir with a ->lookup op or whether it's a fake dir with
           a ->d_automount op.
      
      In some circumstances, we can subsume checks for dentry->d_inode not being
      NULL into this, provided we the code isn't in a filesystem that expects
      d_inode to be NULL if the dirent really *is* negative (ie. if we're going to
      use d_inode() rather than d_backing_inode() to get the inode pointer).
      
      Note that the dentry type field may be set to something other than
      DCACHE_MISS_TYPE when d_inode is NULL in the case of unionmount, where the VFS
      manages the fall-through from a negative dentry to a lower layer.  In such a
      case, the dentry type of the negative union dentry is set to the same as the
      type of the lower dentry.
      
      However, if you know d_inode is not NULL at the call site, then you can use
      the d_is_xxx() functions even in a filesystem.
      
      There is one further complication: a 0,0 chardev dentry may be labelled
      DCACHE_WHITEOUT_TYPE rather than DCACHE_SPECIAL_TYPE.  Strictly, this was
      intended for special directory entry types that don't have attached inodes.
      
      The following perl+coccinelle script was used:
      
      use strict;
      
      my @callers;
      open($fd, 'git grep -l \'S_IS[A-Z].*->d_inode\' |') ||
          die "Can't grep for S_ISDIR and co. callers";
      @callers = <$fd>;
      close($fd);
      unless (@callers) {
          print "No matches\n";
          exit(0);
      }
      
      my @cocci = (
          '@@',
          'expression E;',
          '@@',
          '',
          '- S_ISLNK(E->d_inode->i_mode)',
          '+ d_is_symlink(E)',
          '',
          '@@',
          'expression E;',
          '@@',
          '',
          '- S_ISDIR(E->d_inode->i_mode)',
          '+ d_is_dir(E)',
          '',
          '@@',
          'expression E;',
          '@@',
          '',
          '- S_ISREG(E->d_inode->i_mode)',
          '+ d_is_reg(E)' );
      
      my $coccifile = "tmp.sp.cocci";
      open($fd, ">$coccifile") || die $coccifile;
      print($fd "$_\n") || die $coccifile foreach (@cocci);
      close($fd);
      
      foreach my $file (@callers) {
          chomp $file;
          print "Processing ", $file, "\n";
          system("spatch", "--sp-file", $coccifile, $file, "--in-place", "--no-show-diff") == 0 ||
      	die "spatch failed";
      }
      
      [AV: overlayfs parts skipped]
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      e36cb0b8
  7. 21 2月, 2015 2 次提交
  8. 20 2月, 2015 25 次提交