Patch Name: PHKL_23225 Patch Description: s700_800 11.11 Fix for dqput() data page fault panic Creation Date: 01/02/01 Post Date: 01/05/01 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_23225: PANIC Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHKL_23225 Symptoms: PHKL_23225: ( SR:8606167622 CR:JAGad36908 ) Data Page fault due to a race between mkdir( ) and unmount on a filesystem with quotas. The stack trace for this race condition looks like: stack trace for event 0 crash event was a panic panic+0x14 dqput+0x38 dqrele+0xb8 ieget+0x1b4 in_get+0x30 iget+0x18 ialloc+0x114 dirmakeinode+0xc8 direnter+0x1e4 ufs_mkdir+0x4c vns_create+0x168 vn_create+0xcc mkdir+0x80 syscall+0x480 $syscallrtn+0x0 Defect Description: PHKL_23225: ( SR:8606167622 CR:JAGad36908 ) This is due to a race between two threads one running mkdir( ) and the other umount( ) at the same time, on a filesystem with quotas on. umount( ) grabs the filesystem semaphore, but has not yet gotten rid of the quota (dquot) structure. At this time mkdir( ) seeing the dquot structure still valid tries to execute dqrele(), but blocks or sleeps because the filesystem semaphore is held by umount( ). umount( ) finishes what it is doing, including getting rid of the dquot structure. It then releases the filesystem semaphore. dqrele() now gets the filesystem semaphore and continues. It dosen't check again to see if the dquot structure is still valid. At this point it is trying to release a dquot for a filesystem that has already been unmounted, and thus panics. Resolution: When releasing the quota (dquot) structure for an inode pointer verify that the dquot structure is valid both before and after acquiring the filesystem semaphore. SR: 8606167622 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libfs.a(quota_ufs.o) /usr/conf/lib/libufs.a(ufs_inode.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libfs.a(quota_ufs.o) /usr/conf/lib/libufs.a(ufs_inode.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libfs.a(quota_ufs.o): quota_ufs.c $Date: 2001/01/25 13:28:39 $Revision: r1 1.11/1 PATCH_11.11 (PHKL_23225) /usr/conf/lib/libufs.a(ufs_inode.o): ufs_inode.c $Date: 2001/01/25 13:31:27 $Revision: r1 1.11/1 PATCH_11.11 (PHKL_23225) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libfs.a(quota_ufs.o): quota_ufs.c $Date: 2001/01/25 13:28:39 $Revision: r1 1.11/1 PATCH_11.11 (PHKL_23225) /usr/conf/lib/libufs.a(ufs_inode.o): ufs_inode.c $Date: 2001/01/25 13:31:27 $Revision: r1 1.11/1 PATCH_11.11 (PHKL_23225) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 852367057 6872 /usr/conf/lib/libfs.a(quota_ufs.o) 2948363372 32432 /usr/conf/lib/libufs.a(ufs_inode.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 3348717254 15928 /usr/conf/lib/libfs.a(quota_ufs.o) 3176118795 75248 /usr/conf/lib/libufs.a(ufs_inode.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: PHKL_22635: s700: 11.00 s800: 11.00 Patch Package Size: 150 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHKL_23225 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_23225.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_23225. If you do not wish to retain a copy of the original software, use the patch_save_files option: swinstall -x autoreboot=true -x patch_match_target=true \ -x patch_save_files=false -s /tmp/PHKL_23225.depot WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_23225.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_23225.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_23225.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None