From owner-freebsd-stable@FreeBSD.ORG Sun Jul 1 19:51:24 2007 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B570C16A421 for ; Sun, 1 Jul 2007 19:51:24 +0000 (UTC) (envelope-from raaf@zen.mooo.com) Received: from smtp-2.orange.nl (smtp-2.orange.nl [193.252.22.242]) by mx1.freebsd.org (Postfix) with ESMTP id 752BC13C45A for ; Sun, 1 Jul 2007 19:51:24 +0000 (UTC) (envelope-from raaf@zen.mooo.com) Received: from smtp-2.orange.nl (mwinf6106 [172.22.153.34]) by mwinf6105.orange.nl (SMTP Server) with ESMTP id 6A9412000272 for ; Sun, 1 Jul 2007 21:24:41 +0200 (CEST) Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf6106.orange.nl (SMTP Server) with ESMTP id 2FC3E7000089 for ; Sun, 1 Jul 2007 21:24:39 +0200 (CEST) Received: from zen.mooo.com (s559292f8.adsl.wanadoo.nl [85.146.146.248]) by mwinf6106.orange.nl (SMTP Server) with ESMTP id 152C77000084; Sun, 1 Jul 2007 21:24:38 +0200 (CEST) X-ME-UUID: 20070701192439868.152C77000084@mwinf6106.orange.nl Received: from zen.mooo.com (zen.mooo.com [127.0.0.1]) by zen.mooo.com (Postfix) with ESMTP id F211D21; Sun, 1 Jul 2007 21:24:37 +0200 (CEST) Message-ID: <4687FF75.3000108@zen.mooo.com> Date: Sun, 01 Jul 2007 21:24:37 +0200 From: Raaf User-Agent: Thunderbird 1.5.0.9 (X11/20070103) MIME-Version: 1.0 To: freebsd-stable@freebsd.org, freebsd-fs@freebsd.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: Cannot mount Sony Ericsson mobile phone, msdosfs too restrictive? X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2007 19:51:24 -0000 Hi, i got a Sony Ericsson mobile phone that came with a pre-formatted memory stick that i'm unable to mount in FreeBSD (it mounts fine in Linux). After investigating i found out that the FreeBSD msdsofs driver bails out on the following code (the pmp->pm_Heads being zero): ---------------------------------- if (!pmp->pm_BytesPerSec || !SecPerClust || !pmp->pm_Heads #ifdef PC98 || !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 255) { #else || !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 63) { #endif error = EINVAL; goto error_exit; } ---------------------------------- Removing the check for pmp->pm_Heads fixes it for me. Is the check for pmp->pm_Heads really necessary? Grepping through the msdosfs sources i can only see it being used for validation and not used in any calculation (the same applies for the pmp->pm_SecPerTrack value) --- sys/fs/msdosfs/msdosfs_vfsops.c.orig Sun Jul 1 20:42:14 2007 +++ sys/fs/msdosfs/msdosfs_vfsops.c Sun Jul 1 20:46:57 2007 @@ -483,7 +483,6 @@ /* XXX - We should probably check more values here */ if (!pmp->pm_BytesPerSec || !SecPerClust - || !pmp->pm_Heads #ifdef PC98 || !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 255) { #else