public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Linux 2.6.6-rc3
@ 2004-04-28  2:03 Linus Torvalds
  2004-04-28  8:48 ` Måns Rullgård
                   ` (6 more replies)
  0 siblings, 7 replies; 54+ messages in thread
From: Linus Torvalds @ 2004-04-28  2:03 UTC (permalink / raw)
  To: Kernel Mailing List


s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.

I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
people as possible will test this.

	Thanks,

		Linus

----

Summary of changes from v2.6.6-rc2 to v2.6.6-rc3
============================================

Adrian Cox:
  o PPC32: In some cases we need to make all pages _PAGE_COHERENT

Alan Stern:
  o USB: Important bugfix for UHCI list management code
  o fs/proc/array.c: workaround for gcc-2.96

Alex Williamson:
  o ia64: bug w/ shared interrupts

Andrea Arcangeli:
  o i810_dma range check

Andreas Jochens:
  o [TG3]: Fix typo in TG3_TSO_FW_RODATA_ADDR definition

Andrew Morton:
  o Call populate_rootfs later in boot
  o remove show_trace_task()
  o fbdev comment fix
  o writeback livelock fix
  o dquot: remove unneeded test
  o task_lock() comment update
  o dio_bio_reap() return value fix
  o slab: use order 0 for vfs caches
  o smb_writepage retval fix
  o simplify put_page()
  o ppc32: dma_unmap_page() fix

Andy Lutomirski:
  o compute_creds race

Anton Altaparmakov:
  o NTFS: Set i_generation in VFS inode from seq_no in NTFS inode
  o NTFS: Make ntfs_lookup() NFS export safe, i.e. use
    d_splice_alias(), etc
  o NTFS: Make it compile
  o NTFS: Release 2.1.7 - Enable NFS exporting of mounted NTFS volumes
  o NTFS: Add missing return -EOPNOTSUPP; in
    fs/ntfs/aops.c::ntfs_commit_nonresident_write()
  o NTFS: Fix off by one error in ntfs_get_parent()
  o NTFS: Enforce no atime and no dir atime updates at mount/remount
    time as they are not implemented yet anyway.
  o NTFS: Move a few assignments after a NULL check in fs/ntfs/attrib.c
  o NTFS: Finally fix NFS exporting of mounted NTFS volumes by checking
    the return of d_splice_alias() and acting accordingly rather than
    just ignoring the returned dentry.

Arjan van de Ven:
  o [NET]: linux/if.h needs linux/compiler.h for __user

Armin Schindler:
  o ISDN CAPI: add ncci list semaphore
  o ISDN Eicon driver: remove call to trap usermode helper

Arthur Othieno:
  o PPC32: Fix two typos in arch/ppc/boot/
  o ide-probe.c: kill duplicate #include

Bartlomiej Zolnierkiewicz:
  o prevent module unloading for legacy IDE chipset drivers

Benjamin Herrenschmidt:
  o ppc64: Set ARCH_MIN_TASKALIGN

Bruno Ducrot:
  o [CPUFREQ] Correcting SGTC.  Timer is based upon FSB

Chas Williams:
  o [ATM]: [fore200e] 0.3e version by Christophe Lizzi (lizzi@cnam.fr)
  o [ATM]: [fore200e] make use tasklet configurable

Chris Mason:
  o lockfs: reiserfs fix
  o reiserfs: ignore prepared and locked buffers

Chris Wright:
  o [IPV4]: Fix return value on MCAST_MSFILTER error case
  o credentials locking fix

Christoph Hellwig:
  o lockfs - vfs bits
  o lockfs - xfs bits
  o lockfs - dm bits
  o fix fs/proc/task_nommu.c compile
  o remove Documentation/DocBook/parportbook.tmpl

Colin Leroy:
  o USB: fix cdc-acm as it is still (differently) broken

Daniel Drake:
  o generic PCI IDE support for Toshiba Piccolo chips

Dave Jones:
  o [CPUFREQ] powernow-k7 ACPI integration
  o [CPUFREQ] Drop unneeded part of last patch
  o [CPUFREQ] powernow-k7 needs to init later
  o [CPUFREQ] Remove bogus newline in powernow-k7 driver
  o [CPUFREQ] Add a module parameter to force ACPI to be used
  o [CPUFREQ] Make powernow-k7 acpi debug output a little less verbose
  o [CPUFREQ] powernow-k7 ACPI->PST values were a factor of 10 off
  o [CPUFREQ] clear defaults before powernow-k7 acpi fallback Decoding
    the legacy tables may have set these values.
  o [CPUFREQ] Not all powernow-K7 BIOS's put the frequency at MAX at
    POST
  o [CPUFREQ] Fix debug build of powernow-k8 From Paul Devriendt
  o [CPUFREQ] Fix up missing CONFIG_X86_POWERNOW_K8_ACPI We don't need
    this, we can infer from CONFIG_ACPI_PROCESSOR
  o [CPUFREQ] Fix broken cast
  o [CPUFREQ] Fix unbalanced try_get_module/put_module Spotted by
    Charles Coffing <ccoffing@novell.com>
  o [CPUFREQ] Remove redundant part of powernow-k7 module parm If used
    as a bootparam, this would've become
    powernow-k7.powernow_acpi_force which looks silly.
  o [CPUFREQ] Make an educated guess at the current P-state in the ACPI
    driver
  o [CPUFREQ] Export an array of acpi driver supported frequencies in
    sysfs From Dominik.
  o [CPUFREQ] Fix security hole in proc handler

Dave Kleikamp:
  o JFS: Fix non-ascii file name problem

David Brownell:
  o USB: ehci handles pci misbehavior better
  o USB: rndis gadget driver updates
  o USB: usbnet and pl2301/2302 reset
  o One more USB fix

David Mosberger:
  o ia64: Quiet another compiler-warning
  o ia64: Drop pci_sal_ext_{read,write}() and instead simply switch to
    extended config-space addresses when needed.  This avoids the
    fragile SAL version testing.
  o ia64: When delivering a signal, force byte-order to little-endian
  o ia64: Add message-queue support to copy_siginfo_from_user()

David S. Miller:
  o [TCP]: Abstract out all settings of tcp_opt->ca_state into a
    function
  o [TCP]: Add vegas congestion avoidance support
  o [SPARC64]: Update defconfig
  o [SPARC64]: Fix zero-extension issues wrt. {pgd,pmd}_val()
  o [TG3]: Update driver version and reldate
  o [TG3]: Undo comment typo fix, it was wrong

David Woodhouse:
  o Set ARCH_MIN_TASKALIGN on ppc32

Deepak Saxena:
  o [ARM PATCH] 1815/1: Generic DMA buffer bouncing support for ARM
    targets

Dominik Brodowski:
  o [CPUFREQ] don't use speedstep-centrino on unsupported CPUs

Eric Brower:
  o [COMPAT]: HDIO_DRIVE_TASK is a compatible ioctl

Geert Uytterhoeven:
  o m68k: Amiga A2065 Ethernet KERN_*
  o m68k bitops

Grant Grundler:
  o [TG3]: Fix comment typo

Greg Edwards:
  o ia64: Remove SN PDA page overflow check

Greg Kroah-Hartman:
  o USB: Don't try to suspend devices that do not support it
  o USB: fix cdc-acm warnings due to previous patch
  o USB: fix up fake usb_interface structure in hiddev
  o USB: further cleanup of the hiddev driver, fixing another possible
    oops on disconnect

Herbert Xu:
  o Set module license in mcheck/non-fatal.c

J. Bruce Fields:
  o sunrpc rmmod oops fix

Jakub Jelínek:
  o [SPARC64]: Fix 32-bit posix timers
  o [SPARC64]: Missing part of posix timers fix
  o ia64: add mq support for ia64

Jan Capek:
  o USB: ftdi patch fixup

Jan Kara:
  o ext3 journalled quota locking fix
  o Bigger quota hashtable
  o Per-sb dquot dirty lists
  o Minor fixes for ext3 journalled quotas

Jan-Benedict Glaw:
  o New set of input patches
  o lkkbd: Current version

Jeff Garzik:
  o [TG3]: Dump NIC-specific statistics via ethtool

Jens Axboe:
  o don't log drive loading failures
  o correct LoEj logic
  o fix SG_IO page leak

Keith M. Wesolowski:
  o [SPARC32]: Fix wraparound bug in bitmap allocator

Krzysztof Halasa:
  o [netdrvr tulip] fix use-after-free

Linda Xie:
  o symlink doesn't support kobj name > 20 charaters (KOBJ_NAME_LEN)

Linus Torvalds:
  o Revert fb_ioctl "fix" with extreme prejudice
  o Include <linux/syscalls.h> in files that need them
  o Linux 2.6.6-rc3

Maneesh Soni:
  o prune_dcache comment fix

Manfred Spraul:
  o slab alignment fixes

Marc-Christian Petersen:
  o ext3 avoid writing kernel memory to disk

Marcel Holtmann:
  o i4l: add compat ioctl's for CAPI

Marek Szuba:
  o isofs "default NLS charset not used" fix

Martin Pool:
  o ia64: fpswa_interface needs to be exported

Martin Schwidefsky:
  o s390: core s390
  o s390: common i/o layer
  o s390: 3270 device driver
  o s390: network device drivers
  o s390: dasd device driver
  o s390: zfcp adapter fixes
  o s390: crypto api
  o s390: no timer interrupts in idle

Matt Domsch:
  o EDD: set sysfs attr owner field
  o efivars fixes
  o efibootmgr location change

Matt Mackall:
  o dynamic proc cleanups
  o fix CONFIG_SYSFS=n compile warning

Matt Porter:
  o ppc32: fix head_44x.S copyrights

Matt Tolentino:
  o efivars: remove from arch/ia64
  o efivars: add to drivers/firmware
  o efivars: remove x86 references

Michael Chan:
  o [TG3]: Fix jimbo frame PHY programming

Michael E. Brown:
  o sysfs module unload race fix for bin_attributes

Michael Hunold:
  o V4L: Update the saa7146 driver
  o DVB: Documentation and Kconfig updazes
  o DVB: Update DVB budget drivers
  o DVB: Add EN50221 cam support to dvb-core
  o DVB: Other DVB core updates
  o DVB: AV7110 DVB driver updates
  o DVB: Misc. DVB frontend driver updates
  o DVB: Misc. DVB USB driver updates
  o DVB: Follow saa7146 changes in affected V4L drivers

Michael Veeck:
  o use kernel min/max in IDE code (1/2)
  o use kernel min/max in IDE code (2/2)

Michal Ludvig:
  o [CRYPTO]: Add module autoloads for null module
  o [CRYPTO]: Add module aliases for des and sha512

Mikael Pettersson:
  o clean up Pentium M quirk code in nmi.c
  o use smp_processor_id() in init_IRQ()

Nathan Lynch:
  o ppc64: remove duplicated mb() and comment from __cpu_up

Nicolas Pitre:
  o [ARM PATCH] 1824/1: guard against gcc not respecting local variable
    register assignment
  o [ARM PATCH] 1825/1: abort on bad code generation with div64 in some
    cases

Paul Jackson:
  o hugetlbpage: remove include linux/module.h

Pavel Machek:
  o doc: tips for S3 resume on radeon cards

Pavel Roskin:
  o ide-disk.c: fix for IDE CF card ejection with devfs
  o removal of MOD_{INC,DEC}_USE_COUNT in ide-cs.c

Petri Koistinen:
  o [SUNRPC]: Missing NULL kmalloc check in unix_domain_find()

Ralf Bächle:
  o Au1000 IrDA driver update
  o Remove RCS Id string
  o meth updates
  o BCM1250 network driver updates
  o sgiseeq fixes
  o IOC3 updates
  o declance updates
  o MIPS: PCI code is now shared
  o Add Pete Popov to credits
  o Merge missing MIPS i8042 bits
  o MIPS is an a.out free zone
  o Update comment in fs/compat.c

Randy Dunlap:
  o blkdev.h: functions no longer inline
  o doc: specifiying module parameters

Randy Vinson:
  o Renaming pplus_common.c to hawk_common.c to match gt64260_common.c,
    etc, plus minor cleanups.
  o Updating mcpn765 for 2.6
  o Merge bk://linux.bkbits.net/linux-2.5 into
    linuxbox.(none):/src/linux/ppc/linux-2.5/linux
  o Updating Force PCore to 2.6

Romain Liévin:
  o USB: tiglusb: wrong timeout value
  o tipar char driver: wrong timeout value

Russell King:
  o [ARM] Add find_first_bit and find_next_bit
  o [ARM] Add support for ARM Versatile platform
  o [SERIAL] Correct PL011 help text
  o pcmcia netdev ordering fixes
  o [ARM] Remove extraneous "volatile" from atomic_t pointers

Rusty Russell:
  o [NETFILTER]: Missing ip_rt_put in ipt_MASQUERADE
  o create singlethread_workqueue()
  o Use workqueue for call_usermodehelper
  o ppc64: Split prom.c Into pre-reloc and post-reloc Functions
  o ppc64: Rearrage finish_device_tree() and its functions in C Order
  o ppc64: Rearrage copy_device_tree() and its functions in C Order
  o ppc64: Rearrage interpret_funcs in C Order
  o ppc64: Rearrage Rest of prom.c in C Order
  o ppc64: Make finish_device_tree use lmb_alloc, not klimit
  o ppc64: make_room macro for ppc64 prom.c
  o ppc64: Fix prom.c to boot on G5 after make_room fix
  o ppc64: Clean up prom functions in prom.c
  o ppc64: Initrd Cleanup
  o ppc64: Move Initrd
  o ppc64: prom.c fix for CONFIG_BLK_DEV_INITRD=n
  o Fix cpumask iterator over empty cpu set

Sam Ravnborg:
  o kbuild: Improved external module support

Scott Feldman:
  o e100: ICH 10/H Tx hang fix

Simon Kelley:
  o atmel wireless update

Sridhar Samudrala:
  o [SCTP] Avoid the use of constant SCTP_IP_OVERHEAD to determine the
    max data size in a SCTP packet.
  o [SCTP] Cleanup sctp_packet and sctp_outq infrastructure
  o [SCTP] Partial Reliability Extension support
  o [SCTP] Propagate error from sctp_proc_init. (Olaf Kirch)

Stephen D. Smalley:
  o selinux: change context_to_sid handling for no-policy case
  o selinux: add runtime disable
  o selinux: remove hardcoded policy assumption from get_user_sids()
    logic
  o SELinux ptrace race fix

Stephen Hemminger:
  o [TCP]: Better packing of frto fields into tcp_opt
  o [TCP]: Add sysctl to turn off matrics caching
  o [TCP]: Report vegas info via tcp_diag
  o [TCP]: Add vegas sysctl docs
  o [IPV4]: Spelling fixed for ip-sysctl.txt
  o [IRDA]: Export irda_task_delete

Stephen Rothwell:
  o PPC64 iSeries virtual ethernet fix
  o ppc64: iSeries virtual cdrom module fix
  o ppc64: add some iSeries proc entries

Steve French:
  o Can not mount from cifs vfs client built with gcc 3.3.1 due to
    compiler optimization of unsafe global variable. Remove unsafe
    global variable
  o Fix problem reconnecting additional mounts to the same server after
    session failure.
  o Fix invalid dentry when race in mkdir between two clients
  o fix oops in send_sig on unmount of cifs vfs due to sending signal
    to demultiplex thread after it has exited
  o Fix EIO caused by network timeouts on changing file size
  o fix to not retime out the same session twice since it can
    invalidate the newly reestablished session unnecessarily
  o Do not return buffer if request has already timed out
  o move bad smb session retry to correct location, up one level in
    cifs vfs code
  o fix endian bug in lockingX and add retry on EAGAIN
  o have to reconnect open files safely, one at a time, as needed
  o finish off move from reopening all files on reconnection (which
    takes too long under heavy stress) to reopen file as needed after
    reconnection to server
  o correct retry on remaining handles based calls
  o Fix compile error
  o Missing soft vs. hard retry mount option
  o Do not grab i_sem (already taken in filemap.c across commit write
    calls) during reopen of invalidated file handle
  o Fix oops in mount error path when unload_nls called with bad
    pointer
  o Avoid smb data corruption under heavy stress
  o missing message on timed out requests
  o rcvtimeout set improperly for some cifs servers
  o invalidate locally cached pages when server breaks oplock.  Do not
    loop reconnecting for servers that drop tcp session rather than
    sending smb negprot response
  o Oops on reopen files when dentry already freed
  o invalidate cached pages when last local instance closed so we do
    not use stale data while someone may be modifying the file on the
    server.
  o fix double incrementing of transaction counter
  o Fix check of filldir return code during readdir to avoid incomplete
    search results displayed on very large directories. Fix cleanup of
    proc entries.  Add config parm to allow disabling negotiating Linux
    extensions
  o allow disabling cifs Linux extensions via proc
  o Fix an incorrect mapping of open flags to cifs open disposition. 
    Fix blocking byte range locks.  These fix breakages that were
    notice running lock tests 1 and 7 of the connectathon posix file
    api tests
  o set byte range locktimeouts properly
  o fix cifs readme
  o gracefully exit on failed mounts to win98 (which closes tcp session
    rather than erroring on smb protocol negotiation)
  o fix failed mounts to win98 part II
  o Fix global kernel name space pollution
  o Check return on failed dentry allocation.  Suggested by Randy
    Dunlap
  o Allow null password string pointer and passwords longer than 16
    bytes
  o finish handling commas in passwords
  o finish off mount parm sep override
  o Fix caching problem with multiply open files from different clients
  o Relax requested CIFS permissions on open to simply request
    GENERIC_READ and GENERIC_WRITE (instead of GENERIC_ALL which can
    unnecessarily conflict with share permissions by asking implicitly
    for take ownership and other unneeded flags)
  o fix remoting caching part 2
  o remove spurious debug messages
  o fix problem not connecting to server when port not specified
    explicitly and port field unitialized
  o reset searches properly when filldir fails
  o ipv6 enablement for cifs vfs fixes
  o Spurious white space and duplicated line cleanup
  o improve resume key resetting logic when filldir returns error and
    filename is in unicode
  o allow nosuid mounts
  o fix problem with inode revalidation and cache page invalidation
  o Fix the exec, suid, dev mount parms to not log warnings when
    specified
  o fix caching data integrity problem
  o use safer i_size_write mechanism to update i_size
  o fixes for fsx truncate/readahead/writebehind bug
  o clean up compiler warnings
  o Add missing description about how to specify credentials file
  o Invalidate readahead data properly when file closed, but other
    client changed it on server
  o Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated
    with server.  This allows files that differ only in case and 
    improves performance of file creation and file open to such servers
  o Fix 20 second hang on some deletes of reopened file due to
    semaphore conflict with vfs_delete on i_sem
  o fix merge problem with 2.6.5 (rename of page struct field list to
    lru)
  o Fix misc. minor memory leaks in error paths
  o free cifs read buffer on retry
  o Fix major page leak in read code caused by extra page_cache_get
    call
  o check permission locally for servers that do not support the CIFS
    Unix Extensions (allowing file_mode and dir_mode to augment the
    server permission check, by doing local vfs_permission check)
  o Remove 64 bit compiler warning
  o Remove "badness in remove_proc_entry" warning logged on module
    unload of cifs
  o Add in cifs fcntl handling to fix remote dnotify problem
  o Do not cache inode metadata when cache time set to 0 (fix hardlink
    count caching)
  o Retry 2nd time after failure on correct port
  o RFC1002 fixup
  o exit from waiting on smb response when session dead
  o Update change log for 1.10 cifs vfs
  o proper rc on host down
  o fix error code mapping on bad host
  o fix timeout on close operation when pending signal
  o do not allow routine user signals to kill SendReceive wait for
    response (which was damaging performance badly)

Tom Rini:
  o PPC32: Add CONFIG_MPC10X_BRIDGE
  o PPC32: Remove an unneeded include in arch/ppc/boot/
  o PPC32: Add more useful information to the oops output
  o PPC32: Change all #if FOO to #ifdef FOO
  o PPC32: Two minor Carolina PReP fixes
  o PPC32: Assign an interrupt for the VME chip on PReP MVME* boards

Trond Myklebust:
  o Fix nfsroot option handling
  o nfs_writepage() retval fix

Ulrich Drepper:
  o Add missing __initdata

William Lee Irwin III:
  o i386 hugetlb tlb correction
  o USB: silence dpcm warning
  o hugepage fixes

Yury Umanets:
  o loop_set_fd() sendfile check fix

Zwane Mwaikambo:
  o remove amd7xx_tco
  o SubmittingPatches diffing update


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
@ 2004-04-28  8:48 ` Måns Rullgård
  2004-04-28  9:16 ` Florian Schirmer
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 54+ messages in thread
From: Måns Rullgård @ 2004-04-28  8:48 UTC (permalink / raw)
  To: linux-kernel; +Cc: Linus Torvalds

Linus Torvalds <torvalds@osdl.org> writes:

> s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
>
> I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> people as possible will test this.

I can't see that
http://marc.theaimsgroup.com/?l=linux-kernel&m=108308929211499&w=2 or
an equivalent fix has been included yet.  It would be nice to have it
fixed before the next release.

-- 
Måns Rullgård
mru@kth.se

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
  2004-04-28  8:48 ` Måns Rullgård
@ 2004-04-28  9:16 ` Florian Schirmer
  2004-04-28  9:52   ` Armin Schindler
  2004-04-28 11:56 ` Eyal Lebedinsky
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 54+ messages in thread
From: Florian Schirmer @ 2004-04-28  9:16 UTC (permalink / raw)
  To: Linus Torvalds, armin; +Cc: Kernel Mailing List, i4ldeveloper

Hi,

> Armin Schindler:
>   o ISDN CAPI: add ncci list semaphore

This looks broken for !CONFIG_ISDN_CAPI_MIDDLEWARE configs. Note the up()
inside the #ifdef.

@@ -904,13 +917,17 @@
 			if (copy_from_user((void *)&ncci, (void *)arg,
 					   sizeof(ncci)))
 				return -EFAULT;
-			nccip = capincci_find(cdev, (u32) ncci);
-			if (!nccip)
+
+			down(&cdev->ncci_list_sem);
+			if ((nccip = capincci_find(cdev, (u32) ncci)) == 0) {
+				up(&cdev->ncci_list_sem);
 				return 0;
+			}
 #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
 			if ((mp = nccip->minorp) != 0) {
 				count += atomic_read(&mp->ttyopencount);
 			}
+			up(&cdev->ncci_list_sem);
 #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */
 			return count;
 		}


Regards,
   Florian


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  9:16 ` Florian Schirmer
@ 2004-04-28  9:52   ` Armin Schindler
  0 siblings, 0 replies; 54+ messages in thread
From: Armin Schindler @ 2004-04-28  9:52 UTC (permalink / raw)
  To: Florian Schirmer; +Cc: Linus Torvalds, Kernel Mailing List, i4ldeveloper

On Wed, 28 Apr 2004, Florian Schirmer wrote:
> Hi,
>
> > Armin Schindler:
> >   o ISDN CAPI: add ncci list semaphore
>
> This looks broken for !CONFIG_ISDN_CAPI_MIDDLEWARE configs. Note the up()
> inside the #ifdef.
>
> @@ -904,13 +917,17 @@
>  			if (copy_from_user((void *)&ncci, (void *)arg,
>  					   sizeof(ncci)))
>  				return -EFAULT;
> -			nccip = capincci_find(cdev, (u32) ncci);
> -			if (!nccip)
> +
> +			down(&cdev->ncci_list_sem);
> +			if ((nccip = capincci_find(cdev, (u32) ncci)) == 0) {
> +				up(&cdev->ncci_list_sem);
>  				return 0;
> +			}
>  #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
>  			if ((mp = nccip->minorp) != 0) {
>  				count += atomic_read(&mp->ttyopencount);
>  			}
> +			up(&cdev->ncci_list_sem);
>  #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */
>  			return count;
>  		}

Yes, you are right !
Patch is on its way...

Thanks,
Armin


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
  2004-04-28  8:48 ` Måns Rullgård
  2004-04-28  9:16 ` Florian Schirmer
@ 2004-04-28 11:56 ` Eyal Lebedinsky
  2004-05-01 11:24   ` 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error Adrian Bunk
  2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
  2004-04-28 14:34 ` Linux 2.6.6-rc3 (compile stats) John Cherry
                   ` (3 subsequent siblings)
  6 siblings, 2 replies; 54+ messages in thread
From: Eyal Lebedinsky @ 2004-04-28 11:56 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Kernel Mailing List

Linus Torvalds wrote:
> s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
> 
> I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> people as possible will test this.

OK, I'll bite. Building using :
	# gcc --version
	2.95.4

depmod says:

WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/dvb/frontends/tda1004x.ko needs unknown symbol errno
WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/video/cx88/cx8800.ko needs unknown symbol __ucmpdi2

--
Eyal Lebedinsky (eyal@eyal.emu.id.au) <http://samba.org/eyal/>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3 (compile stats)
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
                   ` (2 preceding siblings ...)
  2004-04-28 11:56 ` Eyal Lebedinsky
@ 2004-04-28 14:34 ` John Cherry
  2004-04-28 17:28 ` Linux 2.6.6-rc3 Maciej Soltysiak
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 54+ messages in thread
From: John Cherry @ 2004-04-28 14:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Kernel Mailing List

Linux 2.6 Compile Statistics (gcc 3.2.2)
Warnings/Errors Summary

Kernel         bzImage    bzImage  bzImage  modules  bzImage   modules
             (defconfig)  (allno)  (allyes) (allyes) (allmod) (allmod)
-----------  -----------  -------- -------- -------- -------- ---------
2.6.6-rc3      0w/0e       0w/0e   124w/ 0e   7w/0e   5w/0e    121w/0e
2.6.6-rc2      0w/0e       0w/0e   122w/ 0e   7w/0e   4w/0e    121w/0e
2.6.6-rc1      0w/0e       0w/0e   125w/ 0e   7w/0e   4w/0e    123w/0e
2.6.5          0w/0e       0w/0e   134w/ 0e   8w/0e   4w/0e    132w/0e
2.6.5-rc3      0w/0e       0w/0e   135w/ 0e   8w/0e   4w/0e    132w/0e
2.6.5-rc2      0w/0e       0w/0e   135w/ 0e   8w/0e   3w/0e    132w/0e
2.6.5-rc1      0w/0e       0w/0e   138w/ 0e   8w/0e   3w/0e    135w/0e
2.6.4          1w/0e       0w/0e   145w/ 0e   7w/0e   3w/0e    142w/0e
2.6.4-rc2      1w/0e       0w/0e   148w/ 0e   7w/0e   3w/0e    145w/0e
2.6.4-rc1      1w/0e       0w/0e   148w/ 0e   7w/0e   3w/0e    145w/0e
2.6.3          1w/0e       0w/0e   142w/ 0e   9w/0e   3w/0e    142w/0e
2.6.3-rc4      1w/0e       0w/0e   142w/ 0e   9w/0e   3w/0e    142w/0e
2.6.3-rc3      1w/0e       0w/0e   145w/ 7e   9w/0e   3w/0e    148w/0e
2.6.3-rc2      1w/0e       0w/0e   141w/ 0e   9w/0e   3w/0e    144w/0e
2.6.3-rc1      1w/0e       0w/0e   145w/ 0e   9w/0e   3w/0e    177w/0e
2.6.2          1w/0e       0w/0e   152w/ 0e  12w/0e   3w/0e    187w/0e
2.6.2-rc3      0w/0e       0w/0e   152w/ 0e  12w/0e   3w/0e    187w/0e
2.6.2-rc2      0w/0e       0w/0e   153w/ 8e  12w/0e   3w/0e    188w/0e
2.6.2-rc1      0w/0e       0w/0e   152w/ 0e  12w/0e   3w/0e    187w/0e
2.6.1          0w/0e       0w/0e   158w/ 0e  12w/0e   3w/0e    197w/0e
2.6.1-rc3      0w/0e       0w/0e   158w/ 0e  12w/0e   3w/0e    197w/0e
2.6.1-rc2      0w/0e       0w/0e   166w/ 0e  12w/0e   3w/0e    205w/0e
2.6.1-rc1      0w/0e       0w/0e   167w/ 0e  12w/0e   3w/0e    206w/0e
2.6.0          0w/0e       0w/0e   170w/ 0e  12w/0e   3w/0e    209w/0e

Web page with links to complete details:
   http://developer.osdl.org/cherry/compile/
Daily compiles (ia32): 
   http://developer.osdl.org/cherry/compile/2.6/linus-tree/running.txt
Daily compiles (ia64): 
   http://developer.osdl.org/cherry/compile/2.6/linus-tree/running64.txt
Latest changes in Linus' bitkeeper tree:
   http://linux.bkbits.net:8080/linux-2.5

John





^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
                   ` (3 preceding siblings ...)
  2004-04-28 14:34 ` Linux 2.6.6-rc3 (compile stats) John Cherry
@ 2004-04-28 17:28 ` Maciej Soltysiak
  2004-04-29  1:02 ` Craig Thomas
  2004-04-29 17:01 ` Jacek Kawa
  6 siblings, 0 replies; 54+ messages in thread
From: Maciej Soltysiak @ 2004-04-28 17:28 UTC (permalink / raw)
  To: linux-kernel

LT>   o [TCP]: Add vegas congestion avoidance support
Wow, this enigmatic piece of code finally got in.
Now everybody that has been looking for it has a chance to check it
out.

LT>   o [TCP]: Report vegas info via tcp_diag
LT>   o [TCP]: Add vegas sysctl docs
And docs too! Yeey!

Regards,
Maciej



^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29  1:02 ` Craig Thomas
@ 2004-04-29  0:59   ` CaT
  2004-04-29 17:10     ` Craig Thomas
  2004-04-29  2:11   ` Andrew Morton
  1 sibling, 1 reply; 54+ messages in thread
From: CaT @ 2004-04-29  0:59 UTC (permalink / raw)
  To: Craig Thomas; +Cc: Kernel Mailing List

On Wed, Apr 28, 2004 at 06:02:00PM -0700, Craig Thomas wrote:
> On Tue, 2004-04-27 at 19:03, Linus Torvalds wrote:
> > s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
> > 
> > I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> > people as possible will test this.
> 
> OSDL is nearly complete with their automated tests.  Tests 
> completed so far:

Would it be possible to get results for the latest 2.4 to compare it
with? To see if it looks like it's doing better, worse or thesame. 2.4
comes out less often so it shouldn't be much of a hassle (right? :).

-- 
    Red herrings strewn hither and yon.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
                   ` (4 preceding siblings ...)
  2004-04-28 17:28 ` Linux 2.6.6-rc3 Maciej Soltysiak
@ 2004-04-29  1:02 ` Craig Thomas
  2004-04-29  0:59   ` CaT
  2004-04-29  2:11   ` Andrew Morton
  2004-04-29 17:01 ` Jacek Kawa
  6 siblings, 2 replies; 54+ messages in thread
From: Craig Thomas @ 2004-04-29  1:02 UTC (permalink / raw)
  To: Kernel Mailing List

On Tue, 2004-04-27 at 19:03, Linus Torvalds wrote:
> s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
> 
> I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> people as possible will test this.

OSDL is nearly complete with their automated tests.  Tests 
completed so far:

LTP          1-way, 2-way
contest      1-way, 2-way
reaim        1-way, 2-way, 4-way, 8-way
lmbench3     1-way, 2-way
bash-memory  1-way
iozone       1-way, 2-way
tiobench     1-way
hackbench           2-way, 4-way
dbt2 (SAP)                 4-way
dbt3 (PostgreSQL)          4-way

I have taken a quick look at the results and I see no degredations
from 2.6.6-rc2 and the performance looks much better than the 
2.6.5 kernel for dbt3 (as reported earlier).

The URL to the test results (a dashboard of info) is located here

http://www.osdl.org/projects/26lnxstblztn/results/

Click the link along the patch-2.6.6-rc3 row under a desired test
if you care to scrutinize the results further.

> 
> 	Thanks,
> 
> 		Linus
> 
> ----
> 
> Summary of changes from v2.6.6-rc2 to v2.6.6-rc3
> ============================================
> 
> Adrian Cox:
>   o PPC32: In some cases we need to make all pages _PAGE_COHERENT
> 
> Alan Stern:
>   o USB: Important bugfix for UHCI list management code
>   o fs/proc/array.c: workaround for gcc-2.96
> 
> Alex Williamson:
>   o ia64: bug w/ shared interrupts
> 
> Andrea Arcangeli:
>   o i810_dma range check
> 
> Andreas Jochens:
>   o [TG3]: Fix typo in TG3_TSO_FW_RODATA_ADDR definition
> 
> Andrew Morton:
>   o Call populate_rootfs later in boot
>   o remove show_trace_task()
>   o fbdev comment fix
>   o writeback livelock fix
>   o dquot: remove unneeded test
>   o task_lock() comment update
>   o dio_bio_reap() return value fix
>   o slab: use order 0 for vfs caches
>   o smb_writepage retval fix
>   o simplify put_page()
>   o ppc32: dma_unmap_page() fix
> 
> Andy Lutomirski:
>   o compute_creds race
> 
> Anton Altaparmakov:
>   o NTFS: Set i_generation in VFS inode from seq_no in NTFS inode
>   o NTFS: Make ntfs_lookup() NFS export safe, i.e. use
>     d_splice_alias(), etc
>   o NTFS: Make it compile
>   o NTFS: Release 2.1.7 - Enable NFS exporting of mounted NTFS volumes
>   o NTFS: Add missing return -EOPNOTSUPP; in
>     fs/ntfs/aops.c::ntfs_commit_nonresident_write()
>   o NTFS: Fix off by one error in ntfs_get_parent()
>   o NTFS: Enforce no atime and no dir atime updates at mount/remount
>     time as they are not implemented yet anyway.
>   o NTFS: Move a few assignments after a NULL check in fs/ntfs/attrib.c
>   o NTFS: Finally fix NFS exporting of mounted NTFS volumes by checking
>     the return of d_splice_alias() and acting accordingly rather than
>     just ignoring the returned dentry.
> 
> Arjan van de Ven:
>   o [NET]: linux/if.h needs linux/compiler.h for __user
> 
> Armin Schindler:
>   o ISDN CAPI: add ncci list semaphore
>   o ISDN Eicon driver: remove call to trap usermode helper
> 
> Arthur Othieno:
>   o PPC32: Fix two typos in arch/ppc/boot/
>   o ide-probe.c: kill duplicate #include
> 
> Bartlomiej Zolnierkiewicz:
>   o prevent module unloading for legacy IDE chipset drivers
> 
> Benjamin Herrenschmidt:
>   o ppc64: Set ARCH_MIN_TASKALIGN
> 
> Bruno Ducrot:
>   o [CPUFREQ] Correcting SGTC.  Timer is based upon FSB
> 
> Chas Williams:
>   o [ATM]: [fore200e] 0.3e version by Christophe Lizzi (lizzi@cnam.fr)
>   o [ATM]: [fore200e] make use tasklet configurable
> 
> Chris Mason:
>   o lockfs: reiserfs fix
>   o reiserfs: ignore prepared and locked buffers
> 
> Chris Wright:
>   o [IPV4]: Fix return value on MCAST_MSFILTER error case
>   o credentials locking fix
> 
> Christoph Hellwig:
>   o lockfs - vfs bits
>   o lockfs - xfs bits
>   o lockfs - dm bits
>   o fix fs/proc/task_nommu.c compile
>   o remove Documentation/DocBook/parportbook.tmpl
> 
> Colin Leroy:
>   o USB: fix cdc-acm as it is still (differently) broken
> 
> Daniel Drake:
>   o generic PCI IDE support for Toshiba Piccolo chips
> 
> Dave Jones:
>   o [CPUFREQ] powernow-k7 ACPI integration
>   o [CPUFREQ] Drop unneeded part of last patch
>   o [CPUFREQ] powernow-k7 needs to init later
>   o [CPUFREQ] Remove bogus newline in powernow-k7 driver
>   o [CPUFREQ] Add a module parameter to force ACPI to be used
>   o [CPUFREQ] Make powernow-k7 acpi debug output a little less verbose
>   o [CPUFREQ] powernow-k7 ACPI->PST values were a factor of 10 off
>   o [CPUFREQ] clear defaults before powernow-k7 acpi fallback Decoding
>     the legacy tables may have set these values.
>   o [CPUFREQ] Not all powernow-K7 BIOS's put the frequency at MAX at
>     POST
>   o [CPUFREQ] Fix debug build of powernow-k8 From Paul Devriendt
>   o [CPUFREQ] Fix up missing CONFIG_X86_POWERNOW_K8_ACPI We don't need
>     this, we can infer from CONFIG_ACPI_PROCESSOR
>   o [CPUFREQ] Fix broken cast
>   o [CPUFREQ] Fix unbalanced try_get_module/put_module Spotted by
>     Charles Coffing <ccoffing@novell.com>
>   o [CPUFREQ] Remove redundant part of powernow-k7 module parm If used
>     as a bootparam, this would've become
>     powernow-k7.powernow_acpi_force which looks silly.
>   o [CPUFREQ] Make an educated guess at the current P-state in the ACPI
>     driver
>   o [CPUFREQ] Export an array of acpi driver supported frequencies in
>     sysfs From Dominik.
>   o [CPUFREQ] Fix security hole in proc handler
> 
> Dave Kleikamp:
>   o JFS: Fix non-ascii file name problem
> 
> David Brownell:
>   o USB: ehci handles pci misbehavior better
>   o USB: rndis gadget driver updates
>   o USB: usbnet and pl2301/2302 reset
>   o One more USB fix
> 
> David Mosberger:
>   o ia64: Quiet another compiler-warning
>   o ia64: Drop pci_sal_ext_{read,write}() and instead simply switch to
>     extended config-space addresses when needed.  This avoids the
>     fragile SAL version testing.
>   o ia64: When delivering a signal, force byte-order to little-endian
>   o ia64: Add message-queue support to copy_siginfo_from_user()
> 
> David S. Miller:
>   o [TCP]: Abstract out all settings of tcp_opt->ca_state into a
>     function
>   o [TCP]: Add vegas congestion avoidance support
>   o [SPARC64]: Update defconfig
>   o [SPARC64]: Fix zero-extension issues wrt. {pgd,pmd}_val()
>   o [TG3]: Update driver version and reldate
>   o [TG3]: Undo comment typo fix, it was wrong
> 
> David Woodhouse:
>   o Set ARCH_MIN_TASKALIGN on ppc32
> 
> Deepak Saxena:
>   o [ARM PATCH] 1815/1: Generic DMA buffer bouncing support for ARM
>     targets
> 
> Dominik Brodowski:
>   o [CPUFREQ] don't use speedstep-centrino on unsupported CPUs
> 
> Eric Brower:
>   o [COMPAT]: HDIO_DRIVE_TASK is a compatible ioctl
> 
> Geert Uytterhoeven:
>   o m68k: Amiga A2065 Ethernet KERN_*
>   o m68k bitops
> 
> Grant Grundler:
>   o [TG3]: Fix comment typo
> 
> Greg Edwards:
>   o ia64: Remove SN PDA page overflow check
> 
> Greg Kroah-Hartman:
>   o USB: Don't try to suspend devices that do not support it
>   o USB: fix cdc-acm warnings due to previous patch
>   o USB: fix up fake usb_interface structure in hiddev
>   o USB: further cleanup of the hiddev driver, fixing another possible
>     oops on disconnect
> 
> Herbert Xu:
>   o Set module license in mcheck/non-fatal.c
> 
> J. Bruce Fields:
>   o sunrpc rmmod oops fix
> 
> Jakub Jelínek:
>   o [SPARC64]: Fix 32-bit posix timers
>   o [SPARC64]: Missing part of posix timers fix
>   o ia64: add mq support for ia64
> 
> Jan Capek:
>   o USB: ftdi patch fixup
> 
> Jan Kara:
>   o ext3 journalled quota locking fix
>   o Bigger quota hashtable
>   o Per-sb dquot dirty lists
>   o Minor fixes for ext3 journalled quotas
> 
> Jan-Benedict Glaw:
>   o New set of input patches
>   o lkkbd: Current version
> 
> Jeff Garzik:
>   o [TG3]: Dump NIC-specific statistics via ethtool
> 
> Jens Axboe:
>   o don't log drive loading failures
>   o correct LoEj logic
>   o fix SG_IO page leak
> 
> Keith M. Wesolowski:
>   o [SPARC32]: Fix wraparound bug in bitmap allocator
> 
> Krzysztof Halasa:
>   o [netdrvr tulip] fix use-after-free
> 
> Linda Xie:
>   o symlink doesn't support kobj name > 20 charaters (KOBJ_NAME_LEN)
> 
> Linus Torvalds:
>   o Revert fb_ioctl "fix" with extreme prejudice
>   o Include <linux/syscalls.h> in files that need them
>   o Linux 2.6.6-rc3
> 
> Maneesh Soni:
>   o prune_dcache comment fix
> 
> Manfred Spraul:
>   o slab alignment fixes
> 
> Marc-Christian Petersen:
>   o ext3 avoid writing kernel memory to disk
> 
> Marcel Holtmann:
>   o i4l: add compat ioctl's for CAPI
> 
> Marek Szuba:
>   o isofs "default NLS charset not used" fix
> 
> Martin Pool:
>   o ia64: fpswa_interface needs to be exported
> 
> Martin Schwidefsky:
>   o s390: core s390
>   o s390: common i/o layer
>   o s390: 3270 device driver
>   o s390: network device drivers
>   o s390: dasd device driver
>   o s390: zfcp adapter fixes
>   o s390: crypto api
>   o s390: no timer interrupts in idle
> 
> Matt Domsch:
>   o EDD: set sysfs attr owner field
>   o efivars fixes
>   o efibootmgr location change
> 
> Matt Mackall:
>   o dynamic proc cleanups
>   o fix CONFIG_SYSFS=n compile warning
> 
> Matt Porter:
>   o ppc32: fix head_44x.S copyrights
> 
> Matt Tolentino:
>   o efivars: remove from arch/ia64
>   o efivars: add to drivers/firmware
>   o efivars: remove x86 references
> 
> Michael Chan:
>   o [TG3]: Fix jimbo frame PHY programming
> 
> Michael E. Brown:
>   o sysfs module unload race fix for bin_attributes
> 
> Michael Hunold:
>   o V4L: Update the saa7146 driver
>   o DVB: Documentation and Kconfig updazes
>   o DVB: Update DVB budget drivers
>   o DVB: Add EN50221 cam support to dvb-core
>   o DVB: Other DVB core updates
>   o DVB: AV7110 DVB driver updates
>   o DVB: Misc. DVB frontend driver updates
>   o DVB: Misc. DVB USB driver updates
>   o DVB: Follow saa7146 changes in affected V4L drivers
> 
> Michael Veeck:
>   o use kernel min/max in IDE code (1/2)
>   o use kernel min/max in IDE code (2/2)
> 
> Michal Ludvig:
>   o [CRYPTO]: Add module autoloads for null module
>   o [CRYPTO]: Add module aliases for des and sha512
> 
> Mikael Pettersson:
>   o clean up Pentium M quirk code in nmi.c
>   o use smp_processor_id() in init_IRQ()
> 
> Nathan Lynch:
>   o ppc64: remove duplicated mb() and comment from __cpu_up
> 
> Nicolas Pitre:
>   o [ARM PATCH] 1824/1: guard against gcc not respecting local variable
>     register assignment
>   o [ARM PATCH] 1825/1: abort on bad code generation with div64 in some
>     cases
> 
> Paul Jackson:
>   o hugetlbpage: remove include linux/module.h
> 
> Pavel Machek:
>   o doc: tips for S3 resume on radeon cards
> 
> Pavel Roskin:
>   o ide-disk.c: fix for IDE CF card ejection with devfs
>   o removal of MOD_{INC,DEC}_USE_COUNT in ide-cs.c
> 
> Petri Koistinen:
>   o [SUNRPC]: Missing NULL kmalloc check in unix_domain_find()
> 
> Ralf Bächle:
>   o Au1000 IrDA driver update
>   o Remove RCS Id string
>   o meth updates
>   o BCM1250 network driver updates
>   o sgiseeq fixes
>   o IOC3 updates
>   o declance updates
>   o MIPS: PCI code is now shared
>   o Add Pete Popov to credits
>   o Merge missing MIPS i8042 bits
>   o MIPS is an a.out free zone
>   o Update comment in fs/compat.c
> 
> Randy Dunlap:
>   o blkdev.h: functions no longer inline
>   o doc: specifiying module parameters
> 
> Randy Vinson:
>   o Renaming pplus_common.c to hawk_common.c to match gt64260_common.c,
>     etc, plus minor cleanups.
>   o Updating mcpn765 for 2.6
>   o Merge bk://linux.bkbits.net/linux-2.5 into
>     linuxbox.(none):/src/linux/ppc/linux-2.5/linux
>   o Updating Force PCore to 2.6
> 
> Romain Liévin:
>   o USB: tiglusb: wrong timeout value
>   o tipar char driver: wrong timeout value
> 
> Russell King:
>   o [ARM] Add find_first_bit and find_next_bit
>   o [ARM] Add support for ARM Versatile platform
>   o [SERIAL] Correct PL011 help text
>   o pcmcia netdev ordering fixes
>   o [ARM] Remove extraneous "volatile" from atomic_t pointers
> 
> Rusty Russell:
>   o [NETFILTER]: Missing ip_rt_put in ipt_MASQUERADE
>   o create singlethread_workqueue()
>   o Use workqueue for call_usermodehelper
>   o ppc64: Split prom.c Into pre-reloc and post-reloc Functions
>   o ppc64: Rearrage finish_device_tree() and its functions in C Order
>   o ppc64: Rearrage copy_device_tree() and its functions in C Order
>   o ppc64: Rearrage interpret_funcs in C Order
>   o ppc64: Rearrage Rest of prom.c in C Order
>   o ppc64: Make finish_device_tree use lmb_alloc, not klimit
>   o ppc64: make_room macro for ppc64 prom.c
>   o ppc64: Fix prom.c to boot on G5 after make_room fix
>   o ppc64: Clean up prom functions in prom.c
>   o ppc64: Initrd Cleanup
>   o ppc64: Move Initrd
>   o ppc64: prom.c fix for CONFIG_BLK_DEV_INITRD=n
>   o Fix cpumask iterator over empty cpu set
> 
> Sam Ravnborg:
>   o kbuild: Improved external module support
> 
> Scott Feldman:
>   o e100: ICH 10/H Tx hang fix
> 
> Simon Kelley:
>   o atmel wireless update
> 
> Sridhar Samudrala:
>   o [SCTP] Avoid the use of constant SCTP_IP_OVERHEAD to determine the
>     max data size in a SCTP packet.
>   o [SCTP] Cleanup sctp_packet and sctp_outq infrastructure
>   o [SCTP] Partial Reliability Extension support
>   o [SCTP] Propagate error from sctp_proc_init. (Olaf Kirch)
> 
> Stephen D. Smalley:
>   o selinux: change context_to_sid handling for no-policy case
>   o selinux: add runtime disable
>   o selinux: remove hardcoded policy assumption from get_user_sids()
>     logic
>   o SELinux ptrace race fix
> 
> Stephen Hemminger:
>   o [TCP]: Better packing of frto fields into tcp_opt
>   o [TCP]: Add sysctl to turn off matrics caching
>   o [TCP]: Report vegas info via tcp_diag
>   o [TCP]: Add vegas sysctl docs
>   o [IPV4]: Spelling fixed for ip-sysctl.txt
>   o [IRDA]: Export irda_task_delete
> 
> Stephen Rothwell:
>   o PPC64 iSeries virtual ethernet fix
>   o ppc64: iSeries virtual cdrom module fix
>   o ppc64: add some iSeries proc entries
> 
> Steve French:
>   o Can not mount from cifs vfs client built with gcc 3.3.1 due to
>     compiler optimization of unsafe global variable. Remove unsafe
>     global variable
>   o Fix problem reconnecting additional mounts to the same server after
>     session failure.
>   o Fix invalid dentry when race in mkdir between two clients
>   o fix oops in send_sig on unmount of cifs vfs due to sending signal
>     to demultiplex thread after it has exited
>   o Fix EIO caused by network timeouts on changing file size
>   o fix to not retime out the same session twice since it can
>     invalidate the newly reestablished session unnecessarily
>   o Do not return buffer if request has already timed out
>   o move bad smb session retry to correct location, up one level in
>     cifs vfs code
>   o fix endian bug in lockingX and add retry on EAGAIN
>   o have to reconnect open files safely, one at a time, as needed
>   o finish off move from reopening all files on reconnection (which
>     takes too long under heavy stress) to reopen file as needed after
>     reconnection to server
>   o correct retry on remaining handles based calls
>   o Fix compile error
>   o Missing soft vs. hard retry mount option
>   o Do not grab i_sem (already taken in filemap.c across commit write
>     calls) during reopen of invalidated file handle
>   o Fix oops in mount error path when unload_nls called with bad
>     pointer
>   o Avoid smb data corruption under heavy stress
>   o missing message on timed out requests
>   o rcvtimeout set improperly for some cifs servers
>   o invalidate locally cached pages when server breaks oplock.  Do not
>     loop reconnecting for servers that drop tcp session rather than
>     sending smb negprot response
>   o Oops on reopen files when dentry already freed
>   o invalidate cached pages when last local instance closed so we do
>     not use stale data while someone may be modifying the file on the
>     server.
>   o fix double incrementing of transaction counter
>   o Fix check of filldir return code during readdir to avoid incomplete
>     search results displayed on very large directories. Fix cleanup of
>     proc entries.  Add config parm to allow disabling negotiating Linux
>     extensions
>   o allow disabling cifs Linux extensions via proc
>   o Fix an incorrect mapping of open flags to cifs open disposition. 
>     Fix blocking byte range locks.  These fix breakages that were
>     notice running lock tests 1 and 7 of the connectathon posix file
>     api tests
>   o set byte range locktimeouts properly
>   o fix cifs readme
>   o gracefully exit on failed mounts to win98 (which closes tcp session
>     rather than erroring on smb protocol negotiation)
>   o fix failed mounts to win98 part II
>   o Fix global kernel name space pollution
>   o Check return on failed dentry allocation.  Suggested by Randy
>     Dunlap
>   o Allow null password string pointer and passwords longer than 16
>     bytes
>   o finish handling commas in passwords
>   o finish off mount parm sep override
>   o Fix caching problem with multiply open files from different clients
>   o Relax requested CIFS permissions on open to simply request
>     GENERIC_READ and GENERIC_WRITE (instead of GENERIC_ALL which can
>     unnecessarily conflict with share permissions by asking implicitly
>     for take ownership and other unneeded flags)
>   o fix remoting caching part 2
>   o remove spurious debug messages
>   o fix problem not connecting to server when port not specified
>     explicitly and port field unitialized
>   o reset searches properly when filldir fails
>   o ipv6 enablement for cifs vfs fixes
>   o Spurious white space and duplicated line cleanup
>   o improve resume key resetting logic when filldir returns error and
>     filename is in unicode
>   o allow nosuid mounts
>   o fix problem with inode revalidation and cache page invalidation
>   o Fix the exec, suid, dev mount parms to not log warnings when
>     specified
>   o fix caching data integrity problem
>   o use safer i_size_write mechanism to update i_size
>   o fixes for fsx truncate/readahead/writebehind bug
>   o clean up compiler warnings
>   o Add missing description about how to specify credentials file
>   o Invalidate readahead data properly when file closed, but other
>     client changed it on server
>   o Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated
>     with server.  This allows files that differ only in case and 
>     improves performance of file creation and file open to such servers
>   o Fix 20 second hang on some deletes of reopened file due to
>     semaphore conflict with vfs_delete on i_sem
>   o fix merge problem with 2.6.5 (rename of page struct field list to
>     lru)
>   o Fix misc. minor memory leaks in error paths
>   o free cifs read buffer on retry
>   o Fix major page leak in read code caused by extra page_cache_get
>     call
>   o check permission locally for servers that do not support the CIFS
>     Unix Extensions (allowing file_mode and dir_mode to augment the
>     server permission check, by doing local vfs_permission check)
>   o Remove 64 bit compiler warning
>   o Remove "badness in remove_proc_entry" warning logged on module
>     unload of cifs
>   o Add in cifs fcntl handling to fix remote dnotify problem
>   o Do not cache inode metadata when cache time set to 0 (fix hardlink
>     count caching)
>   o Retry 2nd time after failure on correct port
>   o RFC1002 fixup
>   o exit from waiting on smb response when session dead
>   o Update change log for 1.10 cifs vfs
>   o proper rc on host down
>   o fix error code mapping on bad host
>   o fix timeout on close operation when pending signal
>   o do not allow routine user signals to kill SendReceive wait for
>     response (which was damaging performance badly)
> 
> Tom Rini:
>   o PPC32: Add CONFIG_MPC10X_BRIDGE
>   o PPC32: Remove an unneeded include in arch/ppc/boot/
>   o PPC32: Add more useful information to the oops output
>   o PPC32: Change all #if FOO to #ifdef FOO
>   o PPC32: Two minor Carolina PReP fixes
>   o PPC32: Assign an interrupt for the VME chip on PReP MVME* boards
> 
> Trond Myklebust:
>   o Fix nfsroot option handling
>   o nfs_writepage() retval fix
> 
> Ulrich Drepper:
>   o Add missing __initdata
> 
> William Lee Irwin III:
>   o i386 hugetlb tlb correction
>   o USB: silence dpcm warning
>   o hugepage fixes
> 
> Yury Umanets:
>   o loop_set_fd() sendfile check fix
> 
> Zwane Mwaikambo:
>   o remove amd7xx_tco
>   o SubmittingPatches diffing update
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29  1:02 ` Craig Thomas
  2004-04-29  0:59   ` CaT
@ 2004-04-29  2:11   ` Andrew Morton
  2004-04-29 15:59     ` Craig Thomas
  1 sibling, 1 reply; 54+ messages in thread
From: Andrew Morton @ 2004-04-29  2:11 UTC (permalink / raw)
  To: Craig Thomas; +Cc: linux-kernel

Craig Thomas <craiger@osdl.org> wrote:
>
> I have taken a quick look at the results and I see no degredations
>  from 2.6.6-rc2 and the performance looks much better than the 
>  2.6.5 kernel for dbt3 (as reported earlier).

The 70% dbt3 improvement is extremely fishy.  Yes, there are things in
2.6.6-rc3 which could improve database workloads by that much, but dbt3
doesn't appear to be using them.

Again, the vmstat traces indicate that after a run on 2.6.6-rc3 we have a
full gigabyte less used pagecache than with 2.6.5.  In both cases there is
still a lot of free memory.  Which tends to indicate that the -rc3 run was,
for some reason, not an equivalent workload - it's using a smaller dataset.

I'd suggest that you double-check these results, try and work out why the
-rc3 run is touching less data.  Maybe go back and redo the 2.6.5 test?

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29  2:11   ` Andrew Morton
@ 2004-04-29 15:59     ` Craig Thomas
  0 siblings, 0 replies; 54+ messages in thread
From: Craig Thomas @ 2004-04-29 15:59 UTC (permalink / raw)
  To: linux-kernel

On Wed, 2004-04-28 at 19:11, Andrew Morton wrote:
> Craig Thomas <craiger@osdl.org> wrote:
> >
> > I have taken a quick look at the results and I see no degredations
> >  from 2.6.6-rc2 and the performance looks much better than the 
> >  2.6.5 kernel for dbt3 (as reported earlier).
> 
> The 70% dbt3 improvement is extremely fishy.  Yes, there are things in
> 2.6.6-rc3 which could improve database workloads by that much, but dbt3
> doesn't appear to be using them.
> 
> Again, the vmstat traces indicate that after a run on 2.6.6-rc3 we have a
> full gigabyte less used pagecache than with 2.6.5.  In both cases there is
> still a lot of free memory.  Which tends to indicate that the -rc3 run was,
> for some reason, not an equivalent workload - it's using a smaller dataset.
> 
> I'd suggest that you double-check these results, try and work out why the
> -rc3 run is touching less data.  Maybe go back and redo the 2.6.5 test?

That's a good plan.  We will do a re-run of 2.6.5 and get back to 
the list. 


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
                   ` (5 preceding siblings ...)
  2004-04-29  1:02 ` Craig Thomas
@ 2004-04-29 17:01 ` Jacek Kawa
  2004-04-29 17:32   ` Sam Ravnborg
  6 siblings, 1 reply; 54+ messages in thread
From: Jacek Kawa @ 2004-04-29 17:01 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel

> I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> people as possible will test this.

Just made oldconfig after 2.6.6-rc1:

CC      drivers/char/vt_ioctl.o
CC      drivers/char/vc_screen.o
CC      drivers/char/consolemap.o
CONMK   drivers/char/consolemap_deftbl.c
CC      drivers/char/consolemap_deftbl.o
CC      drivers/char/selection.o
CC      drivers/char/keyboard.o
CC      drivers/char/vt.o
SHIPPED drivers/char/defkeymap.c
CC      drivers/char/defkeymap.o
CC      drivers/char/sysrq.o
LD      drivers/char/agp/built-in.o
CC [M]  drivers/char/agp/backend.o
CC [M]  drivers/char/agp/frontend.o
CC [M]  drivers/char/agp/generic.o
make[3]: *** No rule to make target `drivers/char/agp/isoch.s', needed
by `drivers/char/agp/isoch.o'.
make[2]: *** [drivers/char/agp] Error 2
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

mrproper cannot clean it this time...

config: http://zeus.polsl.gliwice.pl/~jfk/kernel/config-2.6.6-rc3

bye

-- 
Jacek Kawa

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29  0:59   ` CaT
@ 2004-04-29 17:10     ` Craig Thomas
  0 siblings, 0 replies; 54+ messages in thread
From: Craig Thomas @ 2004-04-29 17:10 UTC (permalink / raw)
  To: Kernel Mailing List

On Wed, 2004-04-28 at 17:59, CaT wrote:
> On Wed, Apr 28, 2004 at 06:02:00PM -0700, Craig Thomas wrote:
> > On Tue, 2004-04-27 at 19:03, Linus Torvalds wrote:
> > > s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
> > > 
> > > I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> > > people as possible will test this.
> > 
> > OSDL is nearly complete with their automated tests.  Tests 
> > completed so far:
> 
> Would it be possible to get results for the latest 2.4 to compare it
> with? To see if it looks like it's doing better, worse or thesame. 2.4
> comes out less often so it shouldn't be much of a hassle (right? :)

Done and posted.  

The DBT3-pgsql test will fail on 2.4 at this time due to LVM2
and PostgreSQL interoperability issues with the 2.6 kernel.  We
have been focusing on the 2.6 kernel, so we have not had a chance to
get that test working on 2.4, but if anyone wants to fix it for 2.4,
we'll be more than happy to run it.


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29 17:01 ` Jacek Kawa
@ 2004-04-29 17:32   ` Sam Ravnborg
  2004-04-30  1:05     ` Jacek Kawa
  0 siblings, 1 reply; 54+ messages in thread
From: Sam Ravnborg @ 2004-04-29 17:32 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel

On Thu, Apr 29, 2004 at 07:01:12PM +0200, Jacek Kawa wrote:
> CC [M]  drivers/char/agp/frontend.o
> CC [M]  drivers/char/agp/generic.o
> make[3]: *** No rule to make target `drivers/char/agp/isoch.s', needed
> by `drivers/char/agp/isoch.o'.

It cannot find the file: isoch.c
Did you do a recursive check-out before building the kernel?
It's in my tree here.

	Sam

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: Linux 2.6.6-rc3
  2004-04-29 17:32   ` Sam Ravnborg
@ 2004-04-30  1:05     ` Jacek Kawa
  0 siblings, 0 replies; 54+ messages in thread
From: Jacek Kawa @ 2004-04-30  1:05 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel

Sam Ravnborg wrote:

> > CC [M]  drivers/char/agp/frontend.o
> > CC [M]  drivers/char/agp/generic.o
> > make[3]: *** No rule to make target `drivers/char/agp/isoch.s', needed
> > by `drivers/char/agp/isoch.o'.
> 
> It cannot find the file: isoch.c

Well, yes..

> Did you do a recursive check-out before building the kernel?
> It's in my tree here.

I thought it was because last patch applied, when in fact it was because
of coping kernel tree to my own directory before I applied it...

-rw-r-----    1 root     root        13235 2004-04-04 06:38 isoch.c
       ^

Anyway false alarm, sorry...

bye

-- 
Jacek Kawa

^ permalink raw reply	[flat|nested] 54+ messages in thread

* 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error
  2004-04-28 11:56 ` Eyal Lebedinsky
@ 2004-05-01 11:24   ` Adrian Bunk
  2004-05-01 17:45     ` Linus Torvalds
  2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
  1 sibling, 1 reply; 54+ messages in thread
From: Adrian Bunk @ 2004-05-01 11:24 UTC (permalink / raw)
  To: Eyal Lebedinsky, Gerd Knorr; +Cc: Linus Torvalds, Kernel Mailing List

On Wed, Apr 28, 2004 at 09:56:08PM +1000, Eyal Lebedinsky wrote:
> Linus Torvalds wrote:
> >s390, cifs, ntfs, ppc, ppc64, cpufreq upates. Oh, and DVB and USB.
> >
> >I'm hoping to do a final 2.6.6 later this week, so I'm hoping as many 
> >people as possible will test this.
> 
> OK, I'll bite. Building using :
> 	# gcc --version
> 	2.95.4
> 
> depmod says:
> 
>...
> WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/video/cx88/cx8800.ko 
> needs unknown symbol __ucmpdi2

I'm also seeing this, but only with gcc 2.95, not with gcc 3.3.3 .

It comes from drivers/media/video/cx88/cx88-video.c, more exactly from 
the switch in set_tvaudio.

But I have to admit I don't understand why exactly it does happen.

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error
  2004-05-01 11:24   ` 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error Adrian Bunk
@ 2004-05-01 17:45     ` Linus Torvalds
  2004-05-01 18:38       ` Andreas Schwab
  0 siblings, 1 reply; 54+ messages in thread
From: Linus Torvalds @ 2004-05-01 17:45 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Eyal Lebedinsky, Gerd Knorr, Kernel Mailing List


On Sat, 1 May 2004, Adrian Bunk wrote:
> >...
> > WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/video/cx88/cx8800.ko 
> > needs unknown symbol __ucmpdi2
> 
> I'm also seeing this, but only with gcc 2.95, not with gcc 3.3.3 .
> 
> It comes from drivers/media/video/cx88/cx88-video.c, more exactly from 
> the switch in set_tvaudio.

I don't see that set_tvaudio() uses any 64-bit comparisons at all, so I 
have this suspicion that the linker reports the wrong function or 
something. 

It might help to use "objdump" to disassemble the object file and see 
where the call to __ucmpdi2 really is - or just build the file as an asm 
file in the first place ("make drivers/media/video/cx88/cx88-video.s") and 
see if you see anything interesting there.

> But I have to admit I don't understand why exactly it does happen.

I'm susprised too. gcc has historically done all the "simple" 64-bit ops
in-line, since they usually are just two instructions or so, and doing
them out-of-line tends to be _more_ work with argument setup etc.

Also, most of the time when this happens, we didn't really want 64-bit
arithmetic in the first place ("long long" arithmetic generates not only
slower and bigger code, it's historically been pretty buggy in gcc, so
most of the kernel is pretty careful about minimizing it). I suspect that
this will end up being the same thing (ie we wanted a 64-bit temporary
result to avoid overflows, but didn't actually need to propagate it all
the way).

			Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error
  2004-05-01 17:45     ` Linus Torvalds
@ 2004-05-01 18:38       ` Andreas Schwab
  2004-05-01 18:57         ` Linus Torvalds
  0 siblings, 1 reply; 54+ messages in thread
From: Andreas Schwab @ 2004-05-01 18:38 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Adrian Bunk, Eyal Lebedinsky, Gerd Knorr, Kernel Mailing List

Linus Torvalds <torvalds@osdl.org> writes:

> On Sat, 1 May 2004, Adrian Bunk wrote:
>> >...
>> > WARNING: /lib/modules/2.6.6-rc3/kernel/drivers/media/video/cx88/cx8800.ko 
>> > needs unknown symbol __ucmpdi2
>> 
>> I'm also seeing this, but only with gcc 2.95, not with gcc 3.3.3 .
>> 
>> It comes from drivers/media/video/cx88/cx88-video.c, more exactly from 
>> the switch in set_tvaudio.
>
> I don't see that set_tvaudio() uses any 64-bit comparisons at all, so I 
> have this suspicion that the linker reports the wrong function or 
> something. 

dev->tvnorm->id is __u64.

linux/videodev2.h:typedef __u64 v4l2_std_id;

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error
  2004-05-01 18:38       ` Andreas Schwab
@ 2004-05-01 18:57         ` Linus Torvalds
  2004-05-04 17:13           ` Gerd Knorr
  0 siblings, 1 reply; 54+ messages in thread
From: Linus Torvalds @ 2004-05-01 18:57 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: Adrian Bunk, Eyal Lebedinsky, Gerd Knorr, Kernel Mailing List



On Sat, 1 May 2004, Andreas Schwab wrote:
> 
> dev->tvnorm->id is __u64.
> 
> linux/videodev2.h:typedef __u64 v4l2_std_id;

Ahh. And maybe this only happens for the "switch()" statement, which would 
explain why gcc-2.95 doesn't have problem with a lot of other 64-bit uses 
in the kernel.

A simple fix might be to just cast it down to a long, since the high bits
seem to be unused. I assume that would fix it. Alternatively, what about
making the "switch()" just be a series of if-statements?

		Linus


^ permalink raw reply	[flat|nested] 54+ messages in thread

* 2.6.6-rc3: modular DVB tda1004x broken
  2004-04-28 11:56 ` Eyal Lebedinsky
  2004-05-01 11:24   ` 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error Adrian Bunk
@ 2004-05-01 20:13   ` Adrian Bunk
  2004-05-01 22:02     ` Johannes Stezenbach
                       ` (2 more replies)
  1 sibling, 3 replies; 54+ messages in thread
From: Adrian Bunk @ 2004-05-01 20:13 UTC (permalink / raw)
  To: Eyal Lebedinsky, linux-dvb-maintainer; +Cc: Linus Torvalds, Kernel Mailing List

On Wed, Apr 28, 2004 at 09:56:08PM +1000, Eyal Lebedinsky wrote:
>...
> depmod says:
> 
> WARNING: 
> /lib/modules/2.6.6-rc3/kernel/drivers/media/dvb/frontends/tda1004x.ko needs 
> unknown symbol errno
>...

Thanks for this report.

It seems the DVB updates broke this.

Please _undo_ the patch below.

cu
Adrian

--- a/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
+++ b/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
@@ -188,7 +190,6 @@
 static struct fwinfo tda10046h_fwinfo[] = { {.file_size = 286720,.fw_offset = 0x3c4f9,.fw_size = 24479} };
 static int tda10046h_fwinfo_count = sizeof(tda10046h_fwinfo) / sizeof(struct fwinfo);
 
-static int errno;
 
 
 static int tda1004x_write_byte(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg, int data)

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
@ 2004-05-01 22:02     ` Johannes Stezenbach
  2004-05-01 22:14     ` Andrew Morton
  2004-05-01 22:37     ` Linus Torvalds
  2 siblings, 0 replies; 54+ messages in thread
From: Johannes Stezenbach @ 2004-05-01 22:02 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Eyal Lebedinsky, linux-dvb-maintainer, Linus Torvalds,
	Kernel Mailing List

On Sat, May 01, 2004 at 10:13:42PM +0200, Adrian Bunk wrote:
> On Wed, Apr 28, 2004 at 09:56:08PM +1000, Eyal Lebedinsky wrote:
> >...
> > depmod says:
> > 
> > WARNING: 
> > /lib/modules/2.6.6-rc3/kernel/drivers/media/dvb/frontends/tda1004x.ko needs 
> > unknown symbol errno
> >...
> 
> Thanks for this report.
> 
> It seems the DVB updates broke this.
> 
> Please _undo_ the patch below.
...
> --- a/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
> +++ b/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
> @@ -188,7 +190,6 @@
>  static struct fwinfo tda10046h_fwinfo[] = { {.file_size = 286720,.fw_offset = 0x3c4f9,.fw_size = 24479} };
>  static int tda10046h_fwinfo_count = sizeof(tda10046h_fwinfo) / sizeof(struct fwinfo);
>  
> -static int errno;
>  
>  
>  static int tda1004x_write_byte(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg, int data)

Indeed, errno is referenced by the __KERNEL_SYSCALLS__ cruft (still used for
firmware loading, request_firmware() depends on the patches that
Michael Hunold is working on for making DVB use the kernel I2C subsytem).
One more hint that this has to be done rsn...

I can't find the error report which motivated this patch so I cannot
come up with a different fix right now. Anyway, the patch must be
reverted.

Johannes

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
  2004-05-01 22:02     ` Johannes Stezenbach
@ 2004-05-01 22:14     ` Andrew Morton
  2004-05-01 22:37     ` Linus Torvalds
  2 siblings, 0 replies; 54+ messages in thread
From: Andrew Morton @ 2004-05-01 22:14 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: eyal, linux-dvb-maintainer, torvalds, linux-kernel

Adrian Bunk <bunk@fs.tum.de> wrote:
>
> Please _undo_ the patch below.
> 
>  cu
>  Adrian
> 
>  --- a/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
>  +++ b/drivers/media/dvb/frontends/tda1004x.c	Tue Apr 27 18:37:15 2004
>  @@ -188,7 +190,6 @@
>   static struct fwinfo tda10046h_fwinfo[] = { {.file_size = 286720,.fw_offset = 0x3c4f9,.fw_size = 24479} };
>   static int tda10046h_fwinfo_count = sizeof(tda10046h_fwinfo) / sizeof(struct fwinfo);
>   
>  -static int errno;

Would be better to export sys_open() and sys_lseek() to GPL modules rather
than persisting with this cruft.

This driver was going to be converted to use the firmware loader API?

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
  2004-05-01 22:02     ` Johannes Stezenbach
  2004-05-01 22:14     ` Andrew Morton
@ 2004-05-01 22:37     ` Linus Torvalds
  2004-05-01 23:10       ` Andrew Morton
  2 siblings, 1 reply; 54+ messages in thread
From: Linus Torvalds @ 2004-05-01 22:37 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Eyal Lebedinsky, linux-dvb-maintainer, Kernel Mailing List



On Sat, 1 May 2004, Adrian Bunk wrote:
> 
> It seems the DVB updates broke this.
> 
> Please _undo_ the patch below.

No, there's something wrong. Nobody should use a global "errno" variable, 
and we should fix the real bug (it's probably some buggy system call 
"interface" function that is being used).

Can somebody who sees this problem please try to figure out where the 
buggy user of "errno" is?

		Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 22:37     ` Linus Torvalds
@ 2004-05-01 23:10       ` Andrew Morton
  2004-05-01 23:55         ` Linus Torvalds
  0 siblings, 1 reply; 54+ messages in thread
From: Andrew Morton @ 2004-05-01 23:10 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: bunk, eyal, linux-dvb-maintainer, linux-kernel

Linus Torvalds <torvalds@osdl.org> wrote:
>
> 
> 
> On Sat, 1 May 2004, Adrian Bunk wrote:
> > 
> > It seems the DVB updates broke this.
> > 
> > Please _undo_ the patch below.
> 
> No, there's something wrong. Nobody should use a global "errno" variable, 
> and we should fix the real bug (it's probably some buggy system call 
> "interface" function that is being used).
> 
> Can somebody who sees this problem please try to figure out where the 
> buggy user of "errno" is?

It's using open() and lseek(), via KERNEL_SYSCALLS.

Maybe we should change __syscall_return() to return the -ve errno rather
than -1?


diff -puN include/asm-i386/unistd.h~a include/asm-i386/unistd.h
--- 25/include/asm-i386/unistd.h~a	2004-05-01 16:09:35.115389384 -0700
+++ 25-akpm/include/asm-i386/unistd.h	2004-05-01 16:09:49.513200584 -0700
@@ -295,10 +295,6 @@
 
 #define __syscall_return(type, res) \
 do { \
-	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
-		errno = -(res); \
-		res = -1; \
-	} \
 	return (type) (res); \
 } while (0)
 

_


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
       [not found]       ` <1RbW9-8sE-17@gated-at.bofh.it>
@ 2004-05-01 23:26         ` Andi Kleen
  2004-05-01 23:34           ` Andrew Morton
  0 siblings, 1 reply; 54+ messages in thread
From: Andi Kleen @ 2004-05-01 23:26 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

Andrew Morton <akpm@osdl.org> writes:
>
> Maybe we should change __syscall_return() to return the -ve errno rather
> than -1?
>
>
> diff -puN include/asm-i386/unistd.h~a include/asm-i386/unistd.h
> --- 25/include/asm-i386/unistd.h~a	2004-05-01 16:09:35.115389384 -0700
> +++ 25-akpm/include/asm-i386/unistd.h	2004-05-01 16:09:49.513200584 -0700
> @@ -295,10 +295,6 @@
>  
>  #define __syscall_return(type, res) \
>  do { \
> -	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
> -		errno = -(res); \
> -		res = -1; \
> -	} \
>  	return (type) (res); \
>  } while (0)

Don't do that please. That will break all the user space
programs who use asm/unistd.h to define own system calls
(it is quite common).

Make it conditional on __KERNEL__

-Andi
  


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 23:26         ` 2.6.6-rc3: modular DVB tda1004x broken Andi Kleen
@ 2004-05-01 23:34           ` Andrew Morton
  0 siblings, 0 replies; 54+ messages in thread
From: Andrew Morton @ 2004-05-01 23:34 UTC (permalink / raw)
  To: Andi Kleen; +Cc: linux-kernel

Andi Kleen <ak@muc.de> wrote:
>
>  > diff -puN include/asm-i386/unistd.h~a include/asm-i386/unistd.h
>  > --- 25/include/asm-i386/unistd.h~a	2004-05-01 16:09:35.115389384 -0700
>  > +++ 25-akpm/include/asm-i386/unistd.h	2004-05-01 16:09:49.513200584 -0700
>  > @@ -295,10 +295,6 @@
>  >  
>  >  #define __syscall_return(type, res) \
>  >  do { \
>  > -	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
>  > -		errno = -(res); \
>  > -		res = -1; \
>  > -	} \
>  >  	return (type) (res); \
>  >  } while (0)
> 
>  Don't do that please. That will break all the user space
>  programs who use asm/unistd.h to define own system calls
>  (it is quite common).
> 
>  Make it conditional on __KERNEL__

err, that was just a "technology demonstration".  Obviously there's a lot
more involved.  Such as fixing up all the other architectures and then
killing off all the `errno' users.


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 23:10       ` Andrew Morton
@ 2004-05-01 23:55         ` Linus Torvalds
  2004-05-02  0:00           ` Chris Wedgwood
  2004-05-02  0:51           ` Andrew Morton
  0 siblings, 2 replies; 54+ messages in thread
From: Linus Torvalds @ 2004-05-01 23:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: bunk, eyal, linux-dvb-maintainer, linux-kernel



On Sat, 1 May 2004, Andrew Morton wrote:
> 
> Maybe we should change __syscall_return() to return the -ve errno rather
> than -1?

Yes. Except we should probably only do this for __KERNEL_SYSCALLS__, since
it's possible that somebody is still using this in user space (it
pre-glibc people).

So maybe a

	#undef __syscall_return
	#define __syscall_return(type, res)	return (type)(res);

inside the __KERNEL_SYSCALLS__ area?

		Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 23:55         ` Linus Torvalds
@ 2004-05-02  0:00           ` Chris Wedgwood
  2004-05-02  0:03             ` Andrew Morton
  2004-05-02  0:28             ` Linus Torvalds
  2004-05-02  0:51           ` Andrew Morton
  1 sibling, 2 replies; 54+ messages in thread
From: Chris Wedgwood @ 2004-05-02  0:00 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Andrew Morton, bunk, eyal, linux-dvb-maintainer, linux-kernel

On Sat, May 01, 2004 at 04:55:30PM -0700, Linus Torvalds wrote:

> Yes. Except we should probably only do this for __KERNEL_SYSCALLS__,
> since it's possible that somebody is still using this in user space
> (it pre-glibc people).

I'm confused.

I thought it has been decreed using kernel headers in userspace was a
bad idea (DONT DO THAT) so in theory we can just ignore this issue?


  --cw

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-02  0:00           ` Chris Wedgwood
@ 2004-05-02  0:03             ` Andrew Morton
  2004-05-02  0:28             ` Linus Torvalds
  1 sibling, 0 replies; 54+ messages in thread
From: Andrew Morton @ 2004-05-02  0:03 UTC (permalink / raw)
  To: Chris Wedgwood; +Cc: torvalds, bunk, eyal, linux-dvb-maintainer, linux-kernel

Chris Wedgwood <cw@f00f.org> wrote:
>
> On Sat, May 01, 2004 at 04:55:30PM -0700, Linus Torvalds wrote:
> 
> > Yes. Except we should probably only do this for __KERNEL_SYSCALLS__,
> > since it's possible that somebody is still using this in user space
> > (it pre-glibc people).
> 
> I'm confused.
> 
> I thought it has been decreed using kernel headers in userspace was a
> bad idea (DONT DO THAT) so in theory we can just ignore this issue?
> 

I prefer not to break stuff which people are currently using, particularly
when avoiding the breakage is a simple thing.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-02  0:00           ` Chris Wedgwood
  2004-05-02  0:03             ` Andrew Morton
@ 2004-05-02  0:28             ` Linus Torvalds
  1 sibling, 0 replies; 54+ messages in thread
From: Linus Torvalds @ 2004-05-02  0:28 UTC (permalink / raw)
  To: Chris Wedgwood
  Cc: Andrew Morton, bunk, eyal, linux-dvb-maintainer, linux-kernel



On Sat, 1 May 2004, Chris Wedgwood wrote:
> 
> I'm confused.

We all are, don't worry.

> I thought it has been decreed using kernel headers in userspace was a
> bad idea (DONT DO THAT) so in theory we can just ignore this issue?

Absolutely. But "in theory" is a thing we may want to strive for, but not 
at the expense of "in practice".

Sadly, we used to encourage (yeah, yeah, I should 'fess up: it was me, I'm 
guilty, I was stupid) user-space code to include kernel headers. 
Admittedly, that was about ten years ago, and we've tried to fix it ever 
since, but the thing is, I think backwards compatibility in the end is 
more important than "in theory". And silently breaking things in subtle 
ways would be bad.

What we _could_ do is to move _all_ the "_syscallX()" stuff into the
__KERNEL__ define, which would at least break any potential pre-glibc
users in a very visible way. What I _don't_ want to do is to have somebody
by mistake compile against updated kernel headers, and it still compiles,
but just doesn't work at run-time the way it's supposed to. THAT is
confusing and bad.

In short: either we should make non-kernel users break in _really_ obvious
(and hopefully easy-to-fix) ways, or we should keep things compatible. 
None of the "oh, the return value changed subtly" thing, please ;)

		Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-01 23:55         ` Linus Torvalds
  2004-05-02  0:00           ` Chris Wedgwood
@ 2004-05-02  0:51           ` Andrew Morton
  2004-05-02  1:16             ` Paul Mackerras
  2004-05-03 18:06             ` David Mosberger
  1 sibling, 2 replies; 54+ messages in thread
From: Andrew Morton @ 2004-05-02  0:51 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: bunk, eyal, linux-dvb-maintainer, linux-kernel

Linus Torvalds <torvalds@osdl.org> wrote:
>
> So maybe a
> 
>  	#undef __syscall_return
>  	#define __syscall_return(type, res)	return (type)(res);
> 
>  inside the __KERNEL_SYSCALLS__ area?

It wasn't quite that simple - lots of architectures have been inventive.

For 2.6.6 we should just stick that errno decl back in there..


 25-akpm/include/asm-alpha/unistd.h     |    4 ++
 25-akpm/include/asm-arm/unistd.h       |    4 ++
 25-akpm/include/asm-arm26/unistd.h     |    4 ++
 25-akpm/include/asm-h8300/unistd.h     |    4 ++
 25-akpm/include/asm-i386/unistd.h      |    4 ++
 25-akpm/include/asm-m68k/unistd.h      |    4 ++
 25-akpm/include/asm-m68knommu/unistd.h |   45 ++++++---------------------
 25-akpm/include/asm-mips/unistd.h      |   55 +++++++++++----------------------
 25-akpm/include/asm-parisc/unistd.h    |   17 +++++++---
 25-akpm/include/asm-ppc/unistd.h       |   17 +++++++---
 25-akpm/include/asm-ppc64/unistd.h     |   17 +++++++---
 25-akpm/include/asm-s390/unistd.h      |    4 ++
 25-akpm/include/asm-sh/unistd.h        |    4 ++
 25-akpm/include/asm-sparc/unistd.h     |   40 +++++++++---------------
 25-akpm/include/asm-sparc64/unistd.h   |   40 +++++++++---------------
 25-akpm/include/asm-v850/unistd.h      |    5 ++-
 25-akpm/include/asm-x86_64/unistd.h    |    4 ++
 include/asm-cris/unistd.h              |    0 
 include/asm-ia64/unistd.h              |    0 
 include/asm-um/unistd.h                |    0 
 20 files changed, 138 insertions(+), 134 deletions(-)

diff -puN include/asm-i386/unistd.h~kernel-syscalls-retval-fix include/asm-i386/unistd.h
--- 25/include/asm-i386/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:04:04.998291624 -0700
+++ 25-akpm/include/asm-i386/unistd.h	2004-05-01 17:38:51.646072944 -0700
@@ -293,6 +293,9 @@
 
 /* user-visible error numbers are in the range -1 - -124: see <asm-i386/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
@@ -301,6 +304,7 @@ do { \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 #define _syscall0(type,name) \
diff -puN include/asm-alpha/unistd.h~kernel-syscalls-retval-fix include/asm-alpha/unistd.h
--- 25/include/asm-alpha/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:00.857678320 -0700
+++ 25-akpm/include/asm-alpha/unistd.h	2004-05-01 17:09:31.219698432 -0700
@@ -367,8 +367,12 @@
 
 #if defined(__GNUC__)
 
+#ifdef __KERNEL__
+#define _syscall_return(type)	return ((type) _sc_ret)
+#else
 #define _syscall_return(type)						\
 	return (_sc_err ? errno = _sc_ret, _sc_ret = -1L : 0), (type) _sc_ret
+#endif
 
 #define _syscall_clobbers						\
 	"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",			\
diff -puN include/asm-arm26/unistd.h~kernel-syscalls-retval-fix include/asm-arm26/unistd.h
--- 25/include/asm-arm26/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:00.888673608 -0700
+++ 25-akpm/include/asm-arm26/unistd.h	2004-05-01 17:10:05.165537880 -0700
@@ -277,6 +277,9 @@
 #define __syscall(name) "swi\t" __sys1(__NR_##name) "\n\t"
 #endif
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res)					\
 do {									\
 	if ((unsigned long)(res) >= (unsigned long)(-125)) {		\
@@ -285,6 +288,7 @@ do {									\
 	}								\
 	return (type) (res);						\
 } while (0)
+#endif
 
 #define _syscall0(type,name)						\
 type name(void) {							\
diff -puN include/asm-arm/unistd.h~kernel-syscalls-retval-fix include/asm-arm/unistd.h
--- 25/include/asm-arm/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:00.917669200 -0700
+++ 25-akpm/include/asm-arm/unistd.h	2004-05-01 17:10:16.747777112 -0700
@@ -324,6 +324,9 @@
 #endif
 #endif
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res)					\
 do {									\
 	if ((unsigned long)(res) >= (unsigned long)(-125)) {		\
@@ -332,6 +335,7 @@ do {									\
 	}								\
 	return (type) (res);						\
 } while (0)
+#endif
 
 #define _syscall0(type,name)						\
 type name(void) {							\
diff -puN include/asm-cris/unistd.h~kernel-syscalls-retval-fix include/asm-cris/unistd.h
diff -puN include/asm-h8300/unistd.h~kernel-syscalls-retval-fix include/asm-h8300/unistd.h
--- 25/include/asm-h8300/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:00.971660992 -0700
+++ 25-akpm/include/asm-h8300/unistd.h	2004-05-01 17:10:55.685857624 -0700
@@ -276,6 +276,9 @@
 /* user-visible error numbers are in the range -1 - -122: see
    <asm-m68k/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
@@ -287,6 +290,7 @@ do { \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 #define _syscall0(type, name)							\
 type name(void)									\
diff -puN include/asm-ia64/unistd.h~kernel-syscalls-retval-fix include/asm-ia64/unistd.h
diff -puN include/asm-m68knommu/unistd.h~kernel-syscalls-retval-fix include/asm-m68knommu/unistd.h
--- 25/include/asm-m68knommu/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.069646096 -0700
+++ 25-akpm/include/asm-m68knommu/unistd.h	2004-05-01 17:14:51.502008120 -0700
@@ -226,17 +226,18 @@
 /* user-visible error numbers are in the range -1 - -122: see
    <asm-m68k/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
-	/* avoid using res which is declared to be in register d0; \
-	   errno might expand to a function call and clobber it.  */ \
-		int __err = -(res); \
-		errno = __err; \
+		errno = -(res); \
 		res = -1; \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 #define _syscall0(type, name)							\
 type name(void)									\
@@ -248,11 +249,7 @@ type name(void)									\
 			: "=g" (__res)						\
 			: "i" (__NR_##name)					\
 			: "cc", "%d0");						\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 #define _syscall1(type, name, atype, a)						\
@@ -267,11 +264,7 @@ type name(atype a)								\
 			: "i" (__NR_##name),					\
 			  "g" ((long)a)						\
 			: "cc", "%d0", "%d1");					\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 #define _syscall2(type, name, atype, a, btype, b)				\
@@ -288,11 +281,7 @@ type name(atype a, btype b)							\
 			  "a" ((long)a),					\
 			  "g" ((long)b)						\
 			: "cc", "%d0", "%d1", "%d2");				\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 #define _syscall3(type, name, atype, a, btype, b, ctype, c)			\
@@ -311,11 +300,7 @@ type name(atype a, btype b, ctype c)				
 			  "a" ((long)b),					\
 			  "g" ((long)c)						\
 			: "cc", "%d0", "%d1", "%d2", "%d3");			\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 #define _syscall4(type, name, atype, a, btype, b, ctype, c, dtype, d)		\
@@ -337,11 +322,7 @@ type name(atype a, btype b, ctype c, dty
 			  "g" ((long)d)						\
 			: "cc", "%d0", "%d1", "%d2", "%d3",			\
 			  "%d4");						\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 #define _syscall5(type, name, atype, a, btype, b, ctype, c, dtype, d, etype, e)	\
@@ -365,11 +346,7 @@ type name(atype a, btype b, ctype c, dty
 			  "g" ((long)e)						\
 			: "cc", "%d0", "%d1", "%d2", "%d3",			\
 			  "%d4", "%d5");					\
-  if ((unsigned long)(__res) >= (unsigned long)(-125)) {				\
-    errno = -__res;								\
-    __res = -1;									\
-  }										\
-  return (type)__res;								\
+  __syscall_return(type, __res);						\
 }
 
 
diff -puN include/asm-m68k/unistd.h~kernel-syscalls-retval-fix include/asm-m68k/unistd.h
--- 25/include/asm-m68k/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.097641840 -0700
+++ 25-akpm/include/asm-m68k/unistd.h	2004-05-01 17:15:10.603104312 -0700
@@ -244,6 +244,9 @@
 /* user-visible error numbers are in the range -1 - -124: see
    <asm-m68k/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
@@ -255,6 +258,7 @@ do { \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 #define _syscall0(type,name) \
 type name(void) \
diff -puN include/asm-mips/unistd.h~kernel-syscalls-retval-fix include/asm-mips/unistd.h
--- 25/include/asm-mips/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.132636520 -0700
+++ 25-akpm/include/asm-mips/unistd.h	2004-05-01 17:18:02.541965632 -0700
@@ -820,6 +820,16 @@
 
 #ifndef __ASSEMBLY__
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
+do { \
+	if (__a3 == 0) \
+		return (type)(res); \
+	errno = res; \
+	return -1; \
+} while (0)
+
 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 #define _syscall0(type,name) \
 type name(void) \
@@ -837,10 +847,7 @@ type name(void) \
 	: "i" (__NR_##name) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 /*
@@ -864,10 +871,7 @@ type name(atype a) \
 	: "r" (__a0), "i" (__NR_##name) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #define _syscall2(type,name,atype,a,btype,b) \
@@ -888,10 +892,7 @@ type name(atype a, btype b) \
 	: "r" (__a0), "r" (__a1), "i" (__NR_##name) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #define _syscall3(type,name,atype,a,btype,b,ctype,c) \
@@ -913,10 +914,7 @@ type name(atype a, btype b, ctype c) \
 	: "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##name) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
@@ -938,10 +936,7 @@ type name(atype a, btype b, ctype c, dty
 	: "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##name) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #if (_MIPS_SIM == _MIPS_SIM_ABI32)
@@ -974,10 +969,7 @@ type name(atype a, btype b, ctype c, dty
 	  "m" ((unsigned long)e) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
@@ -1006,10 +998,7 @@ type name(atype a, btype b, ctype c, dty
 	  "m" ((unsigned long)e), "m" ((unsigned long)f) \
 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #endif /* (_MIPS_SIM == _MIPS_SIM_ABI32) */
@@ -1036,10 +1025,7 @@ type name (atype a,btype b,ctype c,dtype
 	: "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##name) \
 	: "$2","$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
@@ -1064,10 +1050,7 @@ type name (atype a,btype b,ctype c,dtype
 	  "i" (__NR_##name) \
 	: "$2","$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24"); \
 	\
-	if (__a3 == 0) \
-		return (type) __v0; \
-	errno = __v0; \
-	return -1; \
+	__syscall_return(type, __v0) \
 }
 
 #endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */
diff -puN include/asm-parisc/unistd.h~kernel-syscalls-retval-fix include/asm-parisc/unistd.h
--- 25/include/asm-parisc/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.161632112 -0700
+++ 25-akpm/include/asm-parisc/unistd.h	2004-05-01 17:20:18.759257456 -0700
@@ -739,6 +739,17 @@
 
 #define SYS_ify(syscall_name)   __NR_##syscall_name
 
+#ifdef __KERNEL__
+#define __syscall_return __sys_res
+#else
+#define __syscall_return					\
+        if (__sys_res >= (unsigned long)-4095) {		\
+		errno = -__sys_res;				\
+                __sys_res = (unsigned long)-1;			\
+        }							\
+        __sys_res;						\
+#endif
+
 /* The system call number MUST ALWAYS be loaded in the delay slot of
    the ble instruction, or restarting system calls WILL NOT WORK.  See
    arch/parisc/kernel/signal.c - dhd, 2000-07-26 */
@@ -755,11 +766,7 @@
 			  );                                    \
                 __sys_res = __res;                              \
         }                                                       \
-        if (__sys_res >= (unsigned long)-4095) {                \
-		errno = -__sys_res;				\
-                __sys_res = (unsigned long)-1;                 \
-        }                                                       \
-        __sys_res;                                              \
+	__syscall_return					\
 })
 
 #define K_LOAD_ARGS_0()
diff -puN include/asm-ppc64/unistd.h~kernel-syscalls-retval-fix include/asm-ppc64/unistd.h
--- 25/include/asm-ppc64/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.187628160 -0700
+++ 25-akpm/include/asm-ppc64/unistd.h	2004-05-01 17:21:43.897314504 -0700
@@ -286,6 +286,17 @@
 
 #ifndef __ASSEMBLY__
 
+#ifdef __KERNEL__
+#define __syscall_return	/* */
+#else
+#define __syscall_return						\
+	if (__sc_err & 0x10000000)					\
+	{								\
+		errno = __sc_ret;					\
+		__sc_ret = -1;						\
+	}								\
+#endif
+
 /* On powerpc a system call basically clobbers the same registers like a
  * function call, with the exception of LR (which is needed for the
  * "sc; bnslr" sequence) and CR (where only CR0.SO is clobbered to signal
@@ -317,11 +328,7 @@
 		__sc_ret = __sc_3;					\
 		__sc_err = __sc_0;					\
 	}								\
-	if (__sc_err & 0x10000000)					\
-	{								\
-		errno = __sc_ret;					\
-		__sc_ret = -1;						\
-	}								\
+	__syscall_return						\
 	return (type) __sc_ret
 
 #define __sc_loadargs_0(name, dummy...)					\
diff -puN include/asm-ppc/unistd.h~kernel-syscalls-retval-fix include/asm-ppc/unistd.h
--- 25/include/asm-ppc/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.222622840 -0700
+++ 25-akpm/include/asm-ppc/unistd.h	2004-05-01 17:22:19.506901024 -0700
@@ -277,6 +277,17 @@
 
 #define __NR(n)	#n
 
+#ifdef __KERNEL__
+#define __syscall_return	/* */
+#else
+#define __syscall_return						\
+	if (__sc_err & 0x10000000)					\
+	{								\
+		errno = __sc_ret;					\
+		__sc_ret = -1;						\
+	}								\
+#endif
+
 /* On powerpc a system call basically clobbers the same registers like a
  * function call, with the exception of LR (which is needed for the
  * "sc; bnslr" sequence) and CR (where only CR0.SO is clobbered to signal
@@ -307,11 +318,7 @@
 		__sc_ret = __sc_3;					\
 		__sc_err = __sc_0;					\
 	}								\
-	if (__sc_err & 0x10000000)					\
-	{								\
-		errno = __sc_ret;					\
-		__sc_ret = -1;						\
-	}								\
+	__syscall_return						\
 	return (type) __sc_ret
 
 #define __sc_loadargs_0(name, dummy...)					\
diff -puN include/asm-s390/unistd.h~kernel-syscalls-retval-fix include/asm-s390/unistd.h
--- 25/include/asm-s390/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.253618128 -0700
+++ 25-akpm/include/asm-s390/unistd.h	2004-05-01 17:22:38.607997216 -0700
@@ -360,6 +360,9 @@
 
 /* user-visible error numbers are in the range -1 - -122: see <asm-s390/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res)			     \
 do {							     \
 	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
@@ -368,6 +371,7 @@ do {							     \
 	}						     \
 	return (type) (res);				     \
 } while (0)
+#endif
 
 #define _svc_clobber "1", "cc", "memory"
 
diff -puN include/asm-sh/unistd.h~kernel-syscalls-retval-fix include/asm-sh/unistd.h
--- 25/include/asm-sh/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.282613720 -0700
+++ 25-akpm/include/asm-sh/unistd.h	2004-05-01 17:22:57.037195552 -0700
@@ -286,6 +286,9 @@
 
 /* user-visible error numbers are in the range -1 - -124: see <asm-sh/errno.h> */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-124)) { \
@@ -297,6 +300,7 @@ do { \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 #define _syscall0(type,name) \
diff -puN include/asm-sparc64/unistd.h~kernel-syscalls-retval-fix include/asm-sparc64/unistd.h
--- 25/include/asm-sparc64/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.324607336 -0700
+++ 25-akpm/include/asm-sparc64/unistd.h	2004-05-01 17:25:32.979488720 -0700
@@ -303,6 +303,16 @@
  *          find a free slot in the 0-282 range.
  */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
+#define __syscall_return(type, res)		\
+	if (res >= 0)				\
+		return (type)res;		\
+	errno = -res;				\
+	return -1;
+#endif
+
 #define _syscall0(type,name) \
 type name(void) \
 { \
@@ -314,10 +324,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res)\
 		      : "r" (__g1) \
 		      : "o0", "cc"); \
-if (__res >= 0) \
-    return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall1(type,name,type1,arg1) \
@@ -332,10 +339,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__g1) \
 		      : "cc"); \
-if (__res >= 0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall2(type,name,type1,arg1,type2,arg2) \
@@ -351,10 +355,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__g1) \
 		      : "cc"); \
-if (__res >= 0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
@@ -371,10 +372,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__g1) \
 		      : "cc"); \
-if (__res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
@@ -392,10 +390,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__g1) \
 		      : "cc"); \
-if (__res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 } 
 
 #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
@@ -415,10 +410,7 @@ __asm__ __volatile__ ("t 0x6d\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__o4), "r" (__g1) \
 		      : "cc"); \
-if (__res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 #ifdef __KERNEL_SYSCALLS__
 
diff -puN include/asm-sparc/unistd.h~kernel-syscalls-retval-fix include/asm-sparc/unistd.h
--- 25/include/asm-sparc/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.360601864 -0700
+++ 25-akpm/include/asm-sparc/unistd.h	2004-05-01 17:26:55.061010432 -0700
@@ -302,6 +302,16 @@
  *          find a free slot in the 0-282 range.
  */
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
+#define __syscall_return(type, res)		\
+	if (res < -255 || res >= 0)		\
+		return (type)res;		\
+	errno = -res;				\
+	return -1;
+#endif
+
 #define _syscall0(type,name) \
 type name(void) \
 { \
@@ -315,10 +325,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res)\
 		      : "r" (__g1) \
 		      : "o0", "cc"); \
-if (__res < -255 || __res >= 0) \
-    return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall1(type,name,type1,arg1) \
@@ -335,10 +342,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__g1) \
 		      : "cc"); \
-if (__res < -255 || __res >= 0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall2(type,name,type1,arg1,type2,arg2) \
@@ -356,10 +360,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__g1) \
 		      : "cc"); \
-if (__res < -255 || __res >= 0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
@@ -378,10 +379,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__g1) \
 		      : "cc"); \
-if (__res < -255 || __res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 
 #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
@@ -401,10 +399,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__g1) \
 		      : "cc"); \
-if (__res < -255 || __res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 } 
 
 #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
@@ -426,10 +421,7 @@ __asm__ __volatile__ ("t 0x10\n\t" \
 		      : "=r" (__res), "=&r" (__o0) \
 		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__o4), "r" (__g1) \
 		      : "cc"); \
-if (__res < -255 || __res>=0) \
-	return (type) __res; \
-errno = -__res; \
-return -1; \
+	__syscall_return(type, __res) \
 }
 #ifdef __KERNEL_SYSCALLS__
 
diff -puN include/asm-um/unistd.h~kernel-syscalls-retval-fix include/asm-um/unistd.h
diff -puN include/asm-v850/unistd.h~kernel-syscalls-retval-fix include/asm-v850/unistd.h
--- 25/include/asm-v850/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.415593504 -0700
+++ 25-akpm/include/asm-v850/unistd.h	2004-05-01 17:27:26.784187776 -0700
@@ -245,6 +245,9 @@
 #define __builtin_expect(x, expected_value) (x)
 #endif
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res)					      \
   do {									      \
 	  /* user-visible error numbers are in the range -1 - -124:	      \
@@ -255,7 +258,7 @@
 	  }								      \
 	  return (type) (res);						      \
   } while (0)
-
+#endif
 
 #define _syscall0(type, name)						      \
 type name (void)							      \
diff -puN include/asm-x86_64/unistd.h~kernel-syscalls-retval-fix include/asm-x86_64/unistd.h
--- 25/include/asm-x86_64/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.449588336 -0700
+++ 25-akpm/include/asm-x86_64/unistd.h	2004-05-01 17:27:40.526098688 -0700
@@ -560,6 +560,9 @@ __SYSCALL(__NR_mq_getsetattr, sys_mq_get
 
 #define __syscall_clobber "r11","rcx","memory" 
 
+#ifdef __KERNEL__
+#define __syscall_return(type, res) return ((type)(res))
+#else
 #define __syscall_return(type, res) \
 do { \
 	if ((unsigned long)(res) >= (unsigned long)(-127)) { \
@@ -568,6 +571,7 @@ do { \
 	} \
 	return (type) (res); \
 } while (0)
+#endif
 
 #ifndef __KERNEL_SYSCALLS__
 

_


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-02  0:51           ` Andrew Morton
@ 2004-05-02  1:16             ` Paul Mackerras
  2004-05-03 18:06             ` David Mosberger
  1 sibling, 0 replies; 54+ messages in thread
From: Paul Mackerras @ 2004-05-02  1:16 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Linus Torvalds, bunk, eyal, linux-dvb-maintainer, linux-kernel

Andrew Morton writes:

> diff -puN include/asm-ppc64/unistd.h~kernel-syscalls-retval-fix include/asm-ppc64/unistd.h
> --- 25/include/asm-ppc64/unistd.h~kernel-syscalls-retval-fix	2004-05-01 17:06:01.187628160 -0700
> +++ 25-akpm/include/asm-ppc64/unistd.h	2004-05-01 17:21:43.897314504 -0700
> @@ -286,6 +286,17 @@
>  
>  #ifndef __ASSEMBLY__
>  
> +#ifdef __KERNEL__
> +#define __syscall_return	/* */

For ppc and ppc64 a syscall that returns an error puts the positive
error number in r3 and sets the SO bit in CR0.  So if we are expecting
the negative error number as the return value for syscalls in the
kernel we will need this instead:

#define __syscall_return		\
	if (__sc_err & 0x10000000)	\
		__sc_ret = - __sc_ret;

for the #ifdef __KERNEL__ case for both ppc and ppc64.

Thanks,
Paul.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-02  0:51           ` Andrew Morton
  2004-05-02  1:16             ` Paul Mackerras
@ 2004-05-03 18:06             ` David Mosberger
  2004-05-03 18:20               ` Linus Torvalds
  2004-05-03 20:42               ` Linus Torvalds
  1 sibling, 2 replies; 54+ messages in thread
From: David Mosberger @ 2004-05-03 18:06 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Linus Torvalds, bunk, eyal, linux-dvb-maintainer, linux-kernel

>>>>> On Sat, 1 May 2004 17:51:34 -0700, Andrew Morton <akpm@osdl.org> said:

  Andrew> It wasn't quite that simple - lots of architectures have
  Andrew> been inventive.

  Andrew> For 2.6.6 we should just stick that errno decl back in
  Andrew> there..

Why not just disallow user-level use of the _syscall() macros.
syscall() is a much more portable and easier to implement alternative
which has been around "forever" (even SunOS supported it, IIRC).  I
suppose there is a slight performance loss (function-call vs.  inline)
but we're talking about system calls here...

Also, the _syscall() macros have never been supported at the
user-level on ia64 linux and most packages already know to use
syscall().  Unfortunately, some "clever" maintainers use syscall()
only inside #ifdef __ia64, but that would be easy to fix if _syscall()
gets discouraged on all linux platforms.

	--david

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 18:06             ` David Mosberger
@ 2004-05-03 18:20               ` Linus Torvalds
  2004-05-03 18:30                 ` David Mosberger
  2004-05-03 20:42               ` Linus Torvalds
  1 sibling, 1 reply; 54+ messages in thread
From: Linus Torvalds @ 2004-05-03 18:20 UTC (permalink / raw)
  To: davidm; +Cc: Andrew Morton, bunk, eyal, linux-dvb-maintainer, linux-kernel



On Mon, 3 May 2004, David Mosberger wrote:
> 
> Why not just disallow user-level use of the _syscall() macros.

I'm thinking we should disallow the system-calls entirely. User mode
should be using their own macros, and kernel mode should just do the
function call directly.

How much work would that be? I suspect it would be less work than worrying 
about the existing strange interfaces.

		Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 18:20               ` Linus Torvalds
@ 2004-05-03 18:30                 ` David Mosberger
  2004-05-03 18:37                   ` Linus Torvalds
  0 siblings, 1 reply; 54+ messages in thread
From: David Mosberger @ 2004-05-03 18:30 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: davidm, Andrew Morton, bunk, eyal, linux-dvb-maintainer,
	linux-kernel

>>>>> On Mon, 3 May 2004 11:20:35 -0700 (PDT), Linus Torvalds <torvalds@osdl.org> said:

  Linus> On Mon, 3 May 2004, David Mosberger wrote:

  >>  Why not just disallow user-level use of the _syscall() macros.

  Linus> I'm thinking we should disallow the system-calls
  Linus> entirely. User mode should be using their own macros, and
  Linus> kernel mode should just do the function call directly.

I totally agree.  (Note that syscall() is a libc-provided routine.
The kernel has nothing to do with it.)

  Linus> How much work would that be? I suspect it would be less work
  Linus> than worrying about the existing strange interfaces.

Yes.  On ia64, I held off on getting rid of kernel-internal syscalls
entirely because I was too lazy to do kernel_thread().  However, a
while ago, there was a bug that forced us to implement kernel_thread()
via a direct call.  Lo and behold, the resulting code was not only a
lot faster, but it turned out to be short and clean, too.  Very likely
the situation would be similar for the other architectures that have
been holding off on implementing the kernel syscalls via direct calls.

	--david

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 18:30                 ` David Mosberger
@ 2004-05-03 18:37                   ` Linus Torvalds
  0 siblings, 0 replies; 54+ messages in thread
From: Linus Torvalds @ 2004-05-03 18:37 UTC (permalink / raw)
  To: davidm; +Cc: Andrew Morton, bunk, eyal, linux-dvb-maintainer, linux-kernel



On Mon, 3 May 2004, David Mosberger wrote:
> 
> Yes.  On ia64, I held off on getting rid of kernel-internal syscalls
> entirely because I was too lazy to do kernel_thread().

Yeah, there's a few special calls that need more than just a simple 
C-level call. kernel_thread() and execve() ends up being the main ones, I 
think.

On alpha, you could never do the "system call from kernel space" thing in
the first place, so alpha has always just open-coded the things rather
than play games with the "legacy way". Not hugely difficult, at most it
requires one or two assembler wrappers for those special calls that want a
"struct pt_regs" thing passed into them.

		Linus

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 18:06             ` David Mosberger
  2004-05-03 18:20               ` Linus Torvalds
@ 2004-05-03 20:42               ` Linus Torvalds
  2004-05-03 20:56                 ` David Mosberger
  2004-05-03 21:02                 ` Andrew Morton
  1 sibling, 2 replies; 54+ messages in thread
From: Linus Torvalds @ 2004-05-03 20:42 UTC (permalink / raw)
  To: David Mosberger, Andrew Morton
  Cc: bunk, eyal, linux-dvb-maintainer, Kernel Mailing List



How about this patch? Tested on x86 ("make allyesconfig") and the default 
G5 ppc64 config, and likely to work at least on alpha too, since I took 
the silly definitions from there. Others should be trivial to fix up.

Rule: every architecture needs to implement its own kernel "execve()" 
function some way. Everything else is done by the architecture-independent 
<linux/unistd.h> translation layer.

The only change here is that this makes "open()" and friends depend on the
"sys_open()" and friends EXPORT's for modules. Right now it appears that
sys_open/sys_lseek/sys_read are all EXPORT_SYMBOL_GPL's. That sounds
pretty insane anyway (it's not like we can claim that "sys_open()" is some
_internal_ interface), so I'd be inclined to just change them all to
regular EXPORT_SYMBOL's.

(Yes, I realize that we want to _deprecate_ the use of open/read/lseek etc
from modules, but that's different from claiming that they are somehow
GPL-only things. If anything, we should deprecate them from our own 
_internal_ GPL usage _first_ rather than last).

Comments? To me, this is a pretty clear cleanup (and I left the old 
_syscallX() crud alone, even though we could remove it now entirely).

		Linus


------
===== include/asm-alpha/unistd.h 1.27 vs edited =====
--- 1.27/include/asm-alpha/unistd.h	Sat May  1 11:01:54 2004
+++ edited/include/asm-alpha/unistd.h	Mon May  3 13:01:53 2004
@@ -560,70 +560,8 @@
 
 #ifdef __KERNEL_SYSCALLS__
 
-#include <linux/compiler.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/signal.h>
-#include <linux/syscalls.h>
-#include <asm/ptrace.h>
-
-static inline long open(const char * name, int mode, int flags)
-{
-	return sys_open(name, mode, flags);
-}
-
-static inline long dup(int fd)
-{
-	return sys_dup(fd);
-}
-
-static inline long close(int fd)
-{
-	return sys_close(fd);
-}
-
-static inline off_t lseek(int fd, off_t off, int whence)
-{
-	return sys_lseek(fd, off, whence);
-}
-
-static inline void _exit(int value)
-{
-	sys_exit(value);
-}
-
-#define exit(x) _exit(x)
-
-static inline long write(int fd, const char * buf, size_t nr)
-{
-	return sys_write(fd, buf, nr);
-}
-
-static inline long read(int fd, char * buf, size_t nr)
-{
-	return sys_read(fd, buf, nr);
-}
-
+/* This needs a small assembly stub */
 extern long execve(char *, char **, char **);
-
-static inline long setsid(void)
-{
-	return sys_setsid();
-}
-
-static inline pid_t waitpid(int pid, int * wait_stat, int flags)
-{
-	return sys_wait4(pid, wait_stat, flags, NULL);
-}
-
-asmlinkage int sys_execve(char *ufilename, char **argv, char **envp,
-			unsigned long a3, unsigned long a4, unsigned long a5,
-			struct pt_regs regs);
-asmlinkage long sys_rt_sigaction(int sig,
-				const struct sigaction __user *act,
-				struct sigaction __user *oact,
-				size_t sigsetsize,
-				void *restorer);
 
 #endif /* __KERNEL_SYSCALLS__ */
 
===== include/asm-i386/unistd.h 1.35 vs edited =====
--- 1.35/include/asm-i386/unistd.h	Mon Apr 12 10:54:15 2004
+++ edited/include/asm-i386/unistd.h	Mon May  3 13:22:49 2004
@@ -382,49 +382,17 @@
 
 #ifdef __KERNEL_SYSCALLS__
 
-#include <linux/compiler.h>
-#include <linux/types.h>
-#include <linux/linkage.h>
-#include <asm/ptrace.h>
-
-/*
- * we need this inline - forking from kernel space will result
- * in NO COPY ON WRITE (!!!), until an execve is executed. This
- * is no problem, but for the stack. This is handled by not letting
- * main() use the stack at all after fork(). Thus, no function
- * calls - which means inline code for fork too, as otherwise we
- * would use the stack upon exit from 'fork()'.
- *
- * Actually only pause and fork are needed inline, so that there
- * won't be any messing with the stack from main(), but we define
- * some others too.
- */
-static inline _syscall0(pid_t,setsid)
-static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
-static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
-static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
-static inline _syscall1(int,dup,int,fd)
-static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
-static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
-static inline _syscall1(int,close,int,fd)
-static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
-
-asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount);
-asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
-			unsigned long prot, unsigned long flags,
-			unsigned long fd, unsigned long pgoff);
-asmlinkage int sys_execve(struct pt_regs regs);
-asmlinkage int sys_clone(struct pt_regs regs);
-asmlinkage int sys_fork(struct pt_regs regs);
-asmlinkage int sys_vfork(struct pt_regs regs);
-asmlinkage int sys_pipe(unsigned long __user *fildes);
-asmlinkage int sys_ptrace(long request, long pid, long addr, long data);
-asmlinkage long sys_iopl(unsigned long unused);
-struct sigaction;
-asmlinkage long sys_rt_sigaction(int sig,
-				const struct sigaction __user *act,
-				struct sigaction __user *oact,
-				size_t sigsetsize);
+static inline int execve(const char *file, char **argv, char **envp)
+{
+	long __res;
+	__asm__ volatile ("int $0x80"
+		: "=a" (__res)
+		: "0" (__NR_execve),
+		  "b" (file),
+		  "c" (argv),
+		  "d" (envp));
+	return __res;
+}
 
 #endif
 
===== include/linux/unistd.h 1.1 vs edited =====
--- 1.1/include/linux/unistd.h	Tue Feb  5 09:39:39 2002
+++ edited/include/linux/unistd.h	Mon May  3 13:20:51 2004
@@ -8,4 +8,32 @@
  */
 #include <asm/unistd.h>
 
+#ifdef __KERNEL_SYSCALLS__
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+#include <linux/syscalls.h>
+
+static inline long open(const char * name, int mode, int flags)
+{
+	return sys_open((const char __user *) name, mode, flags);
+}
+
+static inline long close(int fd)
+{
+	return sys_close(fd);
+}
+
+static inline off_t lseek(int fd, off_t off, int whence)
+{
+	return sys_lseek(fd, off, whence);
+}
+
+static inline long read(int fd, char * buf, size_t nr)
+{
+	return sys_read(fd, (char __user *) buf, nr);
+}
+
+#endif /* __KERNEL_SYSCALLS__ */
+
 #endif /* _LINUX_UNISTD_H_ */

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 20:42               ` Linus Torvalds
@ 2004-05-03 20:56                 ` David Mosberger
  2004-05-03 21:07                   ` Arjan van de Ven
  2004-05-03 21:02                 ` Andrew Morton
  1 sibling, 1 reply; 54+ messages in thread
From: David Mosberger @ 2004-05-03 20:56 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: David Mosberger, Andrew Morton, bunk, eyal, linux-dvb-maintainer,
	Kernel Mailing List

>>>>> On Mon, 3 May 2004 13:42:54 -0700 (PDT), Linus Torvalds <torvalds@osdl.org> said:

  Linus> Rule: every architecture needs to implement its own kernel
  Linus> "execve()" function some way. Everything else is done by the
  Linus> architecture-independent <linux/unistd.h> translation layer.

Looks good to me.

  Linus> The only change here is that this makes "open()" and friends
  Linus> depend on the "sys_open()" and friends EXPORT's for
  Linus> modules. Right now it appears that
  Linus> sys_open/sys_lseek/sys_read are all EXPORT_SYMBOL_GPL's. That
  Linus> sounds pretty insane anyway (it's not like we can claim that
  Linus> "sys_open()" is some _internal_ interface), so I'd be
  Linus> inclined to just change them all to regular EXPORT_SYMBOL's.

Does the rule have to be that all sys_FOO() entry-points must be
exported via EXPORT_SYMBOL()?  Otherwise we have the strange issue
where a kernel-module may not be able to (easily) invoke a system call
which it could formerly invoke via _syscallN().  For example, the ATI
driver wants to call mlock()/munlock().  While this happens to be a
proprietary/binary-only driver, the same issue can arise with GPL'd
modules.

  Linus> Comments? To me, this is a pretty clear cleanup (and I left
  Linus> the old _syscallX() crud alone, even though we could remove
  Linus> it now entirely).

In my opinion, it would be good to remove _syscallX() altogether.

	--david

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 20:42               ` Linus Torvalds
  2004-05-03 20:56                 ` David Mosberger
@ 2004-05-03 21:02                 ` Andrew Morton
  2004-05-03 21:06                   ` Arjan van de Ven
  2004-05-03 21:16                   ` viro
  1 sibling, 2 replies; 54+ messages in thread
From: Andrew Morton @ 2004-05-03 21:02 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: davidm, bunk, eyal, linux-dvb-maintainer, linux-kernel

Linus Torvalds <torvalds@osdl.org> wrote:
>
> 
> 
> How about this patch? 

Seems sane.  For after 2.6.6 ;)

> +static inline long open(const char * name, int mode, int flags)
> +{
> +	return sys_open((const char __user *) name, mode, flags);
> +}

We may as well stick the get_fs()/set_fs() stuff in here as well - all
callers need to do it, after all.  After which it would best be uninlined.

We can then remove all those `errno's from all over the place, too.  I have
a patch for that.


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:02                 ` Andrew Morton
@ 2004-05-03 21:06                   ` Arjan van de Ven
  2004-05-03 21:16                   ` viro
  1 sibling, 0 replies; 54+ messages in thread
From: Arjan van de Ven @ 2004-05-03 21:06 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Linus Torvalds, davidm, bunk, eyal, linux-dvb-maintainer,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 593 bytes --]

On Mon, 2004-05-03 at 23:02, Andrew Morton wrote:
> Linus Torvalds <torvalds@osdl.org> wrote:
> >
> > 
> > 
> > How about this patch? 
> 
> Seems sane.  For after 2.6.6 ;)
> 
> > +static inline long open(const char * name, int mode, int flags)
> > +{
> > +	return sys_open((const char __user *) name, mode, flags);
> > +}
> 
> We may as well stick the get_fs()/set_fs() stuff in here as well - all
> callers need to do it, after all.  After which it would best be uninlined.


if you're going to modify callers, why not make them use open_filp()
instead of sys_open etc.


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 20:56                 ` David Mosberger
@ 2004-05-03 21:07                   ` Arjan van de Ven
  2004-05-03 22:39                     ` David Mosberger
  0 siblings, 1 reply; 54+ messages in thread
From: Arjan van de Ven @ 2004-05-03 21:07 UTC (permalink / raw)
  To: davidm
  Cc: Linus Torvalds, Andrew Morton, bunk, eyal, linux-dvb-maintainer,
	Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 315 bytes --]

>  For example, the ATI
> driver wants to call mlock()/munlock().  While this happens to be a
> proprietary/binary-only driver, the same issue can arise with GPL'd
> modules.

that is too ugly to live imo. Exporting sys_mlock() for a kernel module
soooo sounds wrong to me, regardless of binary only vs gpl.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:02                 ` Andrew Morton
  2004-05-03 21:06                   ` Arjan van de Ven
@ 2004-05-03 21:16                   ` viro
  2004-05-03 21:24                     ` Jörn Engel
  1 sibling, 1 reply; 54+ messages in thread
From: viro @ 2004-05-03 21:16 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Linus Torvalds, davidm, bunk, eyal, linux-dvb-maintainer,
	linux-kernel

On Mon, May 03, 2004 at 02:02:51PM -0700, Andrew Morton wrote:
> Linus Torvalds <torvalds@osdl.org> wrote:
> >
> > 
> > 
> > How about this patch? 
> 
> Seems sane.  For after 2.6.6 ;)
> 
> > +static inline long open(const char * name, int mode, int flags)
> > +{
> > +	return sys_open((const char __user *) name, mode, flags);
> > +}
> 
> We may as well stick the get_fs()/set_fs() stuff in here as well - all
> callers need to do it, after all.  After which it would best be uninlined.

I'd rather kill open() completely - we only have a handful of in-tree users
and there's no good reason to keep that crap, AFAICS.  I'm gathering the
list of in-tree callers of open()/lseek()/close() and so far a lot of them
look buggy.  More on that later...

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:16                   ` viro
@ 2004-05-03 21:24                     ` Jörn Engel
  2004-05-03 21:54                       ` viro
  0 siblings, 1 reply; 54+ messages in thread
From: Jörn Engel @ 2004-05-03 21:24 UTC (permalink / raw)
  To: viro
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Mon, 3 May 2004 22:16:07 +0100, viro@parcelfarce.linux.theplanet.co.uk wrote:
> 
> I'd rather kill open() completely - we only have a handful of in-tree users
> and there's no good reason to keep that crap, AFAICS.  I'm gathering the
> list of in-tree callers of open()/lseek()/close() and so far a lot of them
> look buggy.  More on that later...

Do you know how many of those exist purely for the purpose of passing
a struct file to one of the various read/write functions?

Jörn

-- 
The grand essentials of happiness are: something to do, something to
love, and something to hope for.
-- Allan K. Chalmers

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:24                     ` Jörn Engel
@ 2004-05-03 21:54                       ` viro
  2004-05-03 22:01                         ` viro
                                           ` (2 more replies)
  0 siblings, 3 replies; 54+ messages in thread
From: viro @ 2004-05-03 21:54 UTC (permalink / raw)
  To: Jörn Engel
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Mon, May 03, 2004 at 11:24:50PM +0200, Jörn Engel wrote:
> On Mon, 3 May 2004 22:16:07 +0100, viro@parcelfarce.linux.theplanet.co.uk wrote:
> > 
> > I'd rather kill open() completely - we only have a handful of in-tree users
> > and there's no good reason to keep that crap, AFAICS.  I'm gathering the
> > list of in-tree callers of open()/lseek()/close() and so far a lot of them
> > look buggy.  More on that later...
> 
> Do you know how many of those exist purely for the purpose of passing
> a struct file to one of the various read/write functions?

Let's see...  Leaving aside obvious userland code (arch/*/boot/*, scripts/*,
drivers/char/ip2/ helpers) and arch/um/* instances that are, AFAICS, in
userland code too and refer to libc open(2), we have
	a) drivers/media/dvb/frontends pile (AFAICS, loading firmware)
	b) systemcfg_init() in asm-ppc64/systemcfg.h (WTF is that about?)
	c) sound/isa/wavefront/wavefront_synth.c (loading firmware)
	d) sound/oss/wavfront.c (loading firmware)
	e) odd calls of sys_close() in binfmt_elf.c, eventpoll.c and socket.c
	f) potentially racy flush_unauthorized_files() in selinux code - uses
sys_close() in a strange way.

That's it.  And I suspect that we ought to switch the firmware loaders to
use of existing helper.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:54                       ` viro
@ 2004-05-03 22:01                         ` viro
  2004-05-03 22:33                         ` Jörn Engel
  2004-05-04 12:13                         ` Stephen Smalley
  2 siblings, 0 replies; 54+ messages in thread
From: viro @ 2004-05-03 22:01 UTC (permalink / raw)
  To: Jörn Engel
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Mon, May 03, 2004 at 10:54:34PM +0100, viro@parcelfarce.linux.theplanet.co.uk wrote:
> 	b) systemcfg_init() in asm-ppc64/systemcfg.h (WTF is that about?)

... outside of __KERNEL__, so looks like a userland code that got there
for fsck knows what reason.  Anyway, open() and close() in it are libc
ones.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:54                       ` viro
  2004-05-03 22:01                         ` viro
@ 2004-05-03 22:33                         ` Jörn Engel
  2004-05-04  0:14                           ` viro
  2004-05-04 12:13                         ` Stephen Smalley
  2 siblings, 1 reply; 54+ messages in thread
From: Jörn Engel @ 2004-05-03 22:33 UTC (permalink / raw)
  To: viro
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Mon, 3 May 2004 22:54:34 +0100, viro@parcelfarce.linux.theplanet.co.uk wrote:
> 
> Let's see...  Leaving aside obvious userland code (arch/*/boot/*, scripts/*,
> drivers/char/ip2/ helpers) and arch/um/* instances that are, AFAICS, in
> userland code too and refer to libc open(2), we have
> 	a) drivers/media/dvb/frontends pile (AFAICS, loading firmware)
> 	b) systemcfg_init() in asm-ppc64/systemcfg.h (WTF is that about?)
> 	c) sound/isa/wavefront/wavefront_synth.c (loading firmware)
> 	d) sound/oss/wavfront.c (loading firmware)
> 	e) odd calls of sys_close() in binfmt_elf.c, eventpoll.c and socket.c
> 	f) potentially racy flush_unauthorized_files() in selinux code - uses
> sys_close() in a strange way.
> 
> That's it.  And I suspect that we ought to switch the firmware loaders to
> use of existing helper.

That cannot be all.  What about these two?  Not sure if my patch is
correct or it should rather s/O_RDONLY/FMODE_READ/.

Jörn

-- 
It does not matter how slowly you go, so long as you do not stop.
-- Confucius

 exec.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

--- linux-2.6.5cow/fs/exec.c~exec_thinko	2004-03-28 21:51:52.000000000 +0200
+++ linux-2.6.5cow/fs/exec.c	2004-05-02 11:47:46.000000000 +0200
@@ -135,7 +135,8 @@
 	if (error)
 		goto exit;
 
-	file = dentry_open(nd.dentry, nd.mnt, O_RDONLY);
+	/* dentry_open used FMODE_(READ|WRITE) instead of the O_* flags. */
+	file = dentry_open(nd.dentry, nd.mnt, 0);
 	error = PTR_ERR(file);
 	if (IS_ERR(file))
 		goto out;
@@ -489,7 +490,8 @@
 				err = -EACCES;
 			file = ERR_PTR(err);
 			if (!err) {
-				file = dentry_open(nd.dentry, nd.mnt, O_RDONLY);
+	/* dentry_open used FMODE_(READ|WRITE) instead of the O_* flags. */
+				file = dentry_open(nd.dentry, nd.mnt, 0);
 				if (!IS_ERR(file)) {
 					err = deny_write_access(file);
 					if (err) {

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:07                   ` Arjan van de Ven
@ 2004-05-03 22:39                     ` David Mosberger
  2004-05-04  7:55                       ` Arjan van de Ven
  0 siblings, 1 reply; 54+ messages in thread
From: David Mosberger @ 2004-05-03 22:39 UTC (permalink / raw)
  To: arjanv
  Cc: davidm, Linus Torvalds, Andrew Morton, bunk, eyal,
	linux-dvb-maintainer, Kernel Mailing List

>>>>> On Mon, 03 May 2004 23:07:04 +0200, Arjan van de Ven <arjanv@redhat.com> said:

  Arjan> Exporting sys_mlock() for a kernel module soooo sounds wrong
  Arjan> to me

On what grounds?  What alternative are you suggesting?

	--david

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 22:33                         ` Jörn Engel
@ 2004-05-04  0:14                           ` viro
  2004-05-04  9:23                             ` Jörn Engel
  0 siblings, 1 reply; 54+ messages in thread
From: viro @ 2004-05-04  0:14 UTC (permalink / raw)
  To: Jörn Engel
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Tue, May 04, 2004 at 12:33:17AM +0200, Jörn Engel wrote:
> That cannot be all.  What about these two?  Not sure if my patch is
> correct or it should rather s/O_RDONLY/FMODE_READ/.

WTF does that have to sys_open(9) or open(9)?

And no, dentry_open() does not take FMODE_... - open_namei() does,
but dentry_open() takes flags unchanged.  Just take a look at
fs/open.c::filp_open() - flags are passed unchanged.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 22:39                     ` David Mosberger
@ 2004-05-04  7:55                       ` Arjan van de Ven
  2004-05-04 16:44                         ` David Mosberger
  0 siblings, 1 reply; 54+ messages in thread
From: Arjan van de Ven @ 2004-05-04  7:55 UTC (permalink / raw)
  To: davidm
  Cc: Linus Torvalds, Andrew Morton, bunk, eyal, linux-dvb-maintainer,
	Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 527 bytes --]

On Mon, May 03, 2004 at 03:39:08PM -0700, David Mosberger wrote:
> >>>>> On Mon, 03 May 2004 23:07:04 +0200, Arjan van de Ven <arjanv@redhat.com> said:
> 
>   Arjan> Exporting sys_mlock() for a kernel module soooo sounds wrong
>   Arjan> to me
> 
> On what grounds?  What alternative are you suggesting?

if the module wants to pin userspace pages there are plenty of alternatives.
Heck I suspect what they want is to mmap a device like most V4L drivers do,
instead of doing it the windows way (let the app malloc and then pin)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-04  0:14                           ` viro
@ 2004-05-04  9:23                             ` Jörn Engel
  0 siblings, 0 replies; 54+ messages in thread
From: Jörn Engel @ 2004-05-04  9:23 UTC (permalink / raw)
  To: viro
  Cc: Andrew Morton, Linus Torvalds, davidm, bunk, eyal,
	linux-dvb-maintainer, linux-kernel

On Tue, 4 May 2004 01:14:50 +0100, viro@parcelfarce.linux.theplanet.co.uk wrote:
> On Tue, May 04, 2004 at 12:33:17AM +0200, Jörn Engel wrote:
> > That cannot be all.  What about these two?  Not sure if my patch is
> > correct or it should rather s/O_RDONLY/FMODE_READ/.
> 
> WTF does that have to sys_open(9) or open(9)?
> 
> And no, dentry_open() does not take FMODE_... - open_namei() does,
> but dentry_open() takes flags unchanged.  Just take a look at
> fs/open.c::filp_open() - flags are passed unchanged.

True, stupid me.

Jörn

-- 
It does not matter how slowly you go, so long as you do not stop.
-- Confucius

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-03 21:54                       ` viro
  2004-05-03 22:01                         ` viro
  2004-05-03 22:33                         ` Jörn Engel
@ 2004-05-04 12:13                         ` Stephen Smalley
  2 siblings, 0 replies; 54+ messages in thread
From: Stephen Smalley @ 2004-05-04 12:13 UTC (permalink / raw)
  To: Alexander Viro
  Cc: Jörn Engel, Andrew Morton, Linus Torvalds, davidm, bunk,
	eyal, linux-dvb-maintainer, lkml, James Morris

On Mon, 2004-05-03 at 17:54, viro@parcelfarce.linux.theplanet.co.uk
wrote:
> 	f) potentially racy flush_unauthorized_files() in selinux code - uses
> sys_close() in a strange way.

The SELinux flush_unauthorized_files code is based on flush_old_files in
fs/exec.c.  It is only executed upon a SID/context transition to flush
files that are not authorized for the new SID/context, and sharing of
the open file table across such transitions requires a share permission
that is only allowed where absolutely necessary, e.g. kernel->init.  Do
we need to change the code?

-- 
Stephen Smalley <sds@epoch.ncsc.mil>
National Security Agency


^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-04  7:55                       ` Arjan van de Ven
@ 2004-05-04 16:44                         ` David Mosberger
  2004-05-04 16:47                           ` Arjan van de Ven
  0 siblings, 1 reply; 54+ messages in thread
From: David Mosberger @ 2004-05-04 16:44 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: davidm, Linus Torvalds, Andrew Morton, bunk, eyal,
	linux-dvb-maintainer, Kernel Mailing List

>>>>> On Tue, 4 May 2004 09:55:55 +0200, Arjan van de Ven <arjanv@redhat.com> said:

  Arjan> On Mon, May 03, 2004 at 03:39:08PM -0700, David Mosberger wrote:
  >> >>>>> On Mon, 03 May 2004 23:07:04 +0200, Arjan van de Ven <arjanv@redhat.com> said:

  Arjan> Exporting sys_mlock() for a kernel module soooo sounds wrong
  Arjan> to me

  >> On what grounds?  What alternative are you suggesting?

  Arjan> if the module wants to pin userspace pages there are plenty
  Arjan> of alternatives.  Heck I suspect what they want is to mmap a
  Arjan> device like most V4L drivers do, instead of doing it the
  Arjan> windows way (let the app malloc and then pin)

You may well be right (it's hard to tell what they're using mlock()
for since its called from the binary-only portion of the driver).
However, as long as x86 supports the _syscallN() macros, they won't
change.

	--david

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: modular DVB tda1004x broken
  2004-05-04 16:44                         ` David Mosberger
@ 2004-05-04 16:47                           ` Arjan van de Ven
  0 siblings, 0 replies; 54+ messages in thread
From: Arjan van de Ven @ 2004-05-04 16:47 UTC (permalink / raw)
  To: davidm
  Cc: Linus Torvalds, Andrew Morton, bunk, eyal, linux-dvb-maintainer,
	Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 329 bytes --]

On Tue, May 04, 2004 at 09:44:27AM -0700, David Mosberger wrote:
> 
> You may well be right (it's hard to tell what they're using mlock()
> for since its called from the binary-only portion of the driver).
> However, as long as x86 supports the _syscallN() macros, they won't
> change.

I got the impression that just changed ;)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error
  2004-05-01 18:57         ` Linus Torvalds
@ 2004-05-04 17:13           ` Gerd Knorr
  0 siblings, 0 replies; 54+ messages in thread
From: Gerd Knorr @ 2004-05-04 17:13 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Andreas Schwab, Adrian Bunk, Eyal Lebedinsky, Kernel Mailing List

> > dev->tvnorm->id is __u64.
> > linux/videodev2.h:typedef __u64 v4l2_std_id;
> 
> Ahh. And maybe this only happens for the "switch()" statement, which would 
> explain why gcc-2.95 doesn't have problem with a lot of other 64-bit uses 
> in the kernel.

Yup, seems to be the switch() statement.  gcc-3.3.3 does that as well on
some architectures btw (seen on ppc).  I'll fix it.

  Gerd


^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2004-05-04 16:50 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-28  2:03 Linux 2.6.6-rc3 Linus Torvalds
2004-04-28  8:48 ` Måns Rullgård
2004-04-28  9:16 ` Florian Schirmer
2004-04-28  9:52   ` Armin Schindler
2004-04-28 11:56 ` Eyal Lebedinsky
2004-05-01 11:24   ` 2.6.6-rc3: gcc 2.95: cx88 __ucmpdi2 error Adrian Bunk
2004-05-01 17:45     ` Linus Torvalds
2004-05-01 18:38       ` Andreas Schwab
2004-05-01 18:57         ` Linus Torvalds
2004-05-04 17:13           ` Gerd Knorr
2004-05-01 20:13   ` 2.6.6-rc3: modular DVB tda1004x broken Adrian Bunk
2004-05-01 22:02     ` Johannes Stezenbach
2004-05-01 22:14     ` Andrew Morton
2004-05-01 22:37     ` Linus Torvalds
2004-05-01 23:10       ` Andrew Morton
2004-05-01 23:55         ` Linus Torvalds
2004-05-02  0:00           ` Chris Wedgwood
2004-05-02  0:03             ` Andrew Morton
2004-05-02  0:28             ` Linus Torvalds
2004-05-02  0:51           ` Andrew Morton
2004-05-02  1:16             ` Paul Mackerras
2004-05-03 18:06             ` David Mosberger
2004-05-03 18:20               ` Linus Torvalds
2004-05-03 18:30                 ` David Mosberger
2004-05-03 18:37                   ` Linus Torvalds
2004-05-03 20:42               ` Linus Torvalds
2004-05-03 20:56                 ` David Mosberger
2004-05-03 21:07                   ` Arjan van de Ven
2004-05-03 22:39                     ` David Mosberger
2004-05-04  7:55                       ` Arjan van de Ven
2004-05-04 16:44                         ` David Mosberger
2004-05-04 16:47                           ` Arjan van de Ven
2004-05-03 21:02                 ` Andrew Morton
2004-05-03 21:06                   ` Arjan van de Ven
2004-05-03 21:16                   ` viro
2004-05-03 21:24                     ` Jörn Engel
2004-05-03 21:54                       ` viro
2004-05-03 22:01                         ` viro
2004-05-03 22:33                         ` Jörn Engel
2004-05-04  0:14                           ` viro
2004-05-04  9:23                             ` Jörn Engel
2004-05-04 12:13                         ` Stephen Smalley
2004-04-28 14:34 ` Linux 2.6.6-rc3 (compile stats) John Cherry
2004-04-28 17:28 ` Linux 2.6.6-rc3 Maciej Soltysiak
2004-04-29  1:02 ` Craig Thomas
2004-04-29  0:59   ` CaT
2004-04-29 17:10     ` Craig Thomas
2004-04-29  2:11   ` Andrew Morton
2004-04-29 15:59     ` Craig Thomas
2004-04-29 17:01 ` Jacek Kawa
2004-04-29 17:32   ` Sam Ravnborg
2004-04-30  1:05     ` Jacek Kawa
     [not found] <1PMQ9-5K6-3@gated-at.bofh.it>
     [not found] ` <1PVTx-4rY-25@gated-at.bofh.it>
     [not found]   ` <1R9hC-6rC-3@gated-at.bofh.it>
     [not found]     ` <1Rbjr-7Y5-17@gated-at.bofh.it>
     [not found]       ` <1RbW9-8sE-17@gated-at.bofh.it>
2004-05-01 23:26         ` 2.6.6-rc3: modular DVB tda1004x broken Andi Kleen
2004-05-01 23:34           ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox