From Jim.Pirzyk@disney.com  Tue May 15 10:45:12 2001
Return-Path: <Jim.Pirzyk@disney.com>
Received: from mail.disney.com (mail.disney.com [204.128.192.15])
	by hub.freebsd.org (Postfix) with ESMTP id 205DF37B422
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 15 May 2001 10:45:03 -0700 (PDT)
	(envelope-from Jim.Pirzyk@disney.com)
Received: from pain10.corp.disney.com (root@pain10.corp.disney.com [153.7.110.100])
	by mail.disney.com (Switch-2.0.1/Switch-2.0.1) with SMTP id f4FHiPA08238
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 15 May 2001 10:44:25 -0700 (PDT)
Received: from louie.fa.disney.com by pain.corp.disney.com with ESMTP for FreeBSD-gnats-submit@freebsd.org; Tue, 15 May 2001 10:45:44 -0700
Received: from plio.fan.fa.disney.com (plio.fan.fa.disney.com [153.7.118.2])
	by louie.fa.disney.com (8.9.2/8.9.2) with ESMTP id KAA14081
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 15 May 2001 10:44:55 -0700 (PDT)
	(envelope-from Jim.Pirzyk@fa.disney.com)
Received: from snoopy.fan.fa.disney.com (snoopy.fan.fa.disney.com [153.7.117.170])
	by plio.fan.fa.disney.com (8.9.2/8.9.2) with ESMTP id KAA13424
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 15 May 2001 10:44:55 -0700 (PDT)
	(envelope-from Jim.Pirzyk@fa.disney.com)
Received: (from Jim.Pirzyk@localhost)
	by snoopy.fan.fa.disney.com (8.11.3/8.9.3) id f4FHis214465;
	Tue, 15 May 2001 10:44:54 -0700 (PDT)
	(envelope-from Jim.Pirzyk@fa.disney.com)
Message-Id: <200105151744.f4FHis214465@snoopy.fan.fa.disney.com>
Date: Tue, 15 May 2001 10:44:54 -0700 (PDT)
From: Jim.Pirzyk@disney.com
Reply-To: Jim.Pirzyk@disney.com
To: FreeBSD-gnats-submit@freebsd.org
Subject: /compat/linux/proc/meminfo has size overflows.
X-Send-Pr-Version: 3.113

>Number:         27350
>Category:       kern
>Synopsis:       /compat/linux/proc/meminfo has size overflow
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pirzyk
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue May 15 10:50:01 PDT 2001
>Closed-Date:    Mon Jun 25 11:54:06 PDT 2001
>Last-Modified:  Mon Jun 25 11:55:39 PDT 2001
>Originator:     Jim Pirzyk
>Release:        FreeBSD 4.3-RELEASE i386
>Organization:
>Environment:
System: FreeBSD snoopy.fan.fa.disney.com 4.3-RELEASE FreeBSD 4.3-RELEASE #4: Fri Apr 27 01:14:59 PDT 2001 root@snoopy.fan.fa.disney.com:/auto/roy/dist/pub/FreeBSD/4.3-RELEASE/sys/compile/UP_WORKSTATION i386


	
>Description:
	A FreeBSD system with 5GB of swap space

Jim.Pirzyk@render001:/usr/local/lsf/etc
48>pstat -sk
Device          1K-blocks     Used    Avail Capacity  Type
/dev/da0s1b       5242752        0  5242752     0%    Interleaved

	But /compat/linux/proc/meminfo only shows us 1GB:

Jim.Pirzyk@render001:/sys/modules/linprocfs
17>cat /compat/linux/proc/meminfo 
Mem:  2413268992 40722432 2372546560 2891776 0 32768
Swap: 1073741824 131072 1073610752
MemTotal:   2356708 kB
MemFree:    2316940 kB
MemShared:     2824 kB
Buffers:          0 kB
Cached:          32 kB
SwapTotal:  1048576 kB
SwapFree:   1048448 kB

>How-To-Repeat:
>Fix:

*** ./sys/i386/linux/linprocfs/linprocfs_misc.c.orig	Thu Dec  7 05:17:55 2000
--- ./sys/i386/linux/linprocfs/linprocfs_misc.c	Tue May 15 10:35:34 2001
***************
*** 92,100 ****
  	unsigned long memfree;		/* free memory in bytes */
  	unsigned long memshared;	/* shared memory ??? */
  	unsigned long buffers, cached;	/* buffer / cache memory ??? */
! 	unsigned long swaptotal;	/* total swap space in bytes */
! 	unsigned long swapused;		/* used swap space in bytes */
! 	unsigned long swapfree;		/* free swap space in bytes */
  	vm_object_t object;
  
  	if (uio->uio_rw != UIO_READ)
--- 92,100 ----
  	unsigned long memfree;		/* free memory in bytes */
  	unsigned long memshared;	/* shared memory ??? */
  	unsigned long buffers, cached;	/* buffer / cache memory ??? */
! 	unsigned long long swaptotal;	/* total swap space in bytes */
! 	unsigned long long swapused;		/* used swap space in bytes */
! 	unsigned long long swapfree;		/* free swap space in bytes */
  	vm_object_t object;
  
  	if (uio->uio_rw != UIO_READ)
***************
*** 117,124 ****
  		swaptotal = 0;
  		swapfree = 0;
  	} else {
! 		swaptotal = swapblist->bl_blocks * 1024; /* XXX why 1024? */
! 		swapfree = swapblist->bl_root->u.bmu_avail * PAGE_SIZE;
  	}
  	swapused = swaptotal - swapfree;
  	memshared = 0;
--- 117,124 ----
  		swaptotal = 0;
  		swapfree = 0;
  	} else {
! 		swaptotal = (unsigned long long) swapblist->bl_blocks * 1024ULL; /* XXX why 1024? */
! 		swapfree = (unsigned long long) swapblist->bl_root->u.bmu_avail * PAGE_SIZE;
  	}
  	swapused = swaptotal - swapfree;
  	memshared = 0;
***************
*** 142,155 ****
  	ps += sprintf(ps,
  		"        total:    used:    free:  shared: buffers:  cached:\n"
  		"Mem:  %lu %lu %lu %lu %lu %lu\n"
! 		"Swap: %lu %lu %lu\n"
  		"MemTotal: %9lu kB\n"
  		"MemFree:  %9lu kB\n"
  		"MemShared:%9lu kB\n"
  		"Buffers:  %9lu kB\n"
  		"Cached:   %9lu kB\n"
! 		"SwapTotal:%9lu kB\n"
! 		"SwapFree: %9lu kB\n",
  		memtotal, memused, memfree, memshared, buffers, cached,
  		swaptotal, swapused, swapfree,
  		B2K(memtotal), B2K(memfree),
--- 142,155 ----
  	ps += sprintf(ps,
  		"        total:    used:    free:  shared: buffers:  cached:\n"
  		"Mem:  %lu %lu %lu %lu %lu %lu\n"
! 		"Swap: %llu %llu %llu\n"
  		"MemTotal: %9lu kB\n"
  		"MemFree:  %9lu kB\n"
  		"MemShared:%9lu kB\n"
  		"Buffers:  %9lu kB\n"
  		"Cached:   %9lu kB\n"
! 		"SwapTotal:%9llu kB\n"
! 		"SwapFree: %9llu kB\n",
  		memtotal, memused, memfree, memshared, buffers, cached,
  		swaptotal, swapused, swapfree,
  		B2K(memtotal), B2K(memfree),
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->des 
Responsible-Changed-By: des 
Responsible-Changed-When: Sat May 26 10:22:02 PDT 2001 
Responsible-Changed-Why:  
linprocfs is mine. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=27350 
State-Changed-From-To: open->feedback 
State-Changed-By: des 
State-Changed-When: Sun May 27 06:15:03 PDT 2001 
State-Changed-Why:  
Fixed in -CURRENT. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=27350 

From: Jim Pirzyk <Jim.Pirzyk@disney.com>
To: freebsd-gnats-submit@FreeBSD.org, Jim.Pirzyk@disney.com
Cc:  
Subject: Re: kern/27350: /compat/linux/proc/meminfo has size overflow
Date: Tue, 29 May 2001 13:41:14 -0700

 Tried it in -current and it works.  Thanks.
 -- 
 --- @(#) $Id: dot.signature,v 1.10 2001/05/17 23:38:49 Jim.Pirzyk Exp $
     __o   Jim.Pirzyk@disney.com ------------- pirzyk@freebsd.org
  _'\<,_   Senior Systems Engineer, Walt Disney Feature Animation 
 (*)/ (*)
State-Changed-From-To: feedback->closed 
State-Changed-By: pirzyk 
State-Changed-When: Mon Jun 25 11:54:06 PDT 2001 
State-Changed-Why:  
Patches applied to both -stable and -current 



Responsible-Changed-From-To: des->pirzyk 
Responsible-Changed-By: pirzyk 
Responsible-Changed-When: Mon Jun 25 11:54:06 PDT 2001 
Responsible-Changed-Why:  
I applied my own patches with des' approval. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=27350 
>Unformatted:
