Print this page
5382 pvn_getpages handles lengths <= PAGESIZE just fine

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/specfs/specvnops.c
          +++ new/usr/src/uts/common/fs/specfs/specvnops.c
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
       24 + * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  24   25   */
  25   26  
  26   27  /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
  27   28  /*        All Rights Reserved   */
  28   29  
  29   30  /*
  30   31   * University Copyright- Copyright (c) 1982, 1986, 1988
  31   32   * The Regents of the University of California
  32   33   * All Rights Reserved
  33   34   *
↓ open down ↓ 1750 lines elided ↑ open up ↑
1784 1785              vp, off, len, sp);
1785 1786  
1786 1787          switch (vp->v_type) {
1787 1788          case VBLK:
1788 1789                  if (protp != NULL)
1789 1790                          *protp = PROT_ALL;
1790 1791  
1791 1792                  if (((u_offset_t)off + len) > (SPEC_SIZE(sp) + PAGEOFFSET))
1792 1793                          return (EFAULT);        /* beyond EOF */
1793 1794  
1794      -                if (len <= PAGESIZE)
1795      -                        err = spec_getapage(vp, (u_offset_t)off, len, protp, pl,
1796      -                            plsz, seg, addr, rw, cr);
1797      -                else
1798      -                        err = pvn_getpages(spec_getapage, vp, (u_offset_t)off,
1799      -                            len, protp, pl, plsz, seg, addr, rw, cr);
     1795 +                err = pvn_getpages(spec_getapage, vp, (u_offset_t)off, len,
     1796 +                    protp, pl, plsz, seg, addr, rw, cr);
1800 1797                  break;
1801 1798  
1802 1799          case VCHR:
1803 1800                  cmn_err(CE_NOTE, "spec_getpage called for character device. "
1804 1801                      "Check any non-ON consolidation drivers");
1805 1802                  err = 0;
1806 1803                  pl[0] = (page_t *)0;
1807 1804                  break;
1808 1805  
1809 1806          default:
↓ open down ↓ 882 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX