From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 796D8C35679 for ; Mon, 24 Feb 2020 06:36:31 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3BAE420661 for ; Mon, 24 Feb 2020 06:36:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="LHYz7zof" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3BAE420661 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C4D016B0005; Mon, 24 Feb 2020 01:36:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BFD4D6B0006; Mon, 24 Feb 2020 01:36:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9DC76B0007; Mon, 24 Feb 2020 01:36:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0218.hostedemail.com [216.40.44.218]) by kanga.kvack.org (Postfix) with ESMTP id 8E3026B0005 for ; Mon, 24 Feb 2020 01:36:30 -0500 (EST) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 28D9D3D12 for ; Mon, 24 Feb 2020 06:36:30 +0000 (UTC) X-FDA: 76524061740.27.drug54_1b98749389807 X-HE-Tag: drug54_1b98749389807 X-Filterd-Recvd-Size: 5250 Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by imf36.hostedemail.com (Postfix) with ESMTP for ; Mon, 24 Feb 2020 06:36:29 +0000 (UTC) Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 01O6YRoN147475; Mon, 24 Feb 2020 06:36:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : mime-version : content-type; s=corp-2020-01-29; bh=8fDCvhQvCVM5lGJvnWvjtrUQm5phj5HgF0LcEEFXjzw=; b=LHYz7zofK1i3kKP62gLjS9MCFozfoiJXVmw73Hlpa8GIb95R5K4pmKzKtJsyBDx/iojZ smpQ4j5YDLGXT80JgdiIZOFBnHXVE9MyBVoRpRIZE1srPZuwGUDSEYE04Dk41I8f6YDE Xp6MgEEI+eIOnByGOECRgar3AEmVeQGVBpzKtnhe6zrqEa8OG/RBr4qkXskwL4KichLS nZK50MK5RlhJK8xiHQXSIciYCu8MKLv3I8Qm9sZ81jhSgAnPvD7iZwgDWGds9OuU882V mKTzc3Y3bD1tjwobDfZkoKRzgrqRrqJfSwF44pzMcv72ibZ6Eai7yQUPndnM1YJUBBdI +A== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2yavxrd63b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 24 Feb 2020 06:36:25 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 01O6VrI1077198; Mon, 24 Feb 2020 06:36:25 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 2ybe10fast-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 24 Feb 2020 06:36:25 +0000 Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 01O6aONI008540; Mon, 24 Feb 2020 06:36:24 GMT Received: from kili.mountain (/129.205.23.165) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 23 Feb 2020 22:36:22 -0800 Date: Mon, 24 Feb 2020 09:35:58 +0300 From: Dan Carpenter To: mgorman@techsingularity.net Cc: linux-mm@kvack.org Subject: [bug report] mm, compaction: capture a page under direct compaction Message-ID: <20200224062949.mhyi2ntdiq4vbptm@kili.mountain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: NeoMutt/20170113 (1.7.2) X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9540 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=486 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002240056 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9540 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 suspectscore=1 bulkscore=0 mlxlogscore=535 malwarescore=0 phishscore=0 adultscore=0 priorityscore=1501 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002240056 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hello Mel Gorman, This is a semi-automatic email about new static checker warnings. The patch 5e1f0f098b46: "mm, compaction: capture a page under direct compaction" from Mar 5, 2019, leads to the following Smatch complaint: mm/compaction.c:2321 compact_zone_order() error: we previously assumed 'capture' could be null (see line 2313) mm/compaction.c 2288 static enum compact_result compact_zone_order(struct zone *zone, int order, 2289 gfp_t gfp_mask, enum compact_priority prio, 2290 unsigned int alloc_flags, int classzone_idx, 2291 struct page **capture) ^^^^^^^ 2292 { 2293 enum compact_result ret; 2294 struct compact_control cc = { 2295 .order = order, 2296 .search_order = order, 2297 .gfp_mask = gfp_mask, 2298 .zone = zone, 2299 .mode = (prio == COMPACT_PRIO_ASYNC) ? 2300 MIGRATE_ASYNC : MIGRATE_SYNC_LIGHT, 2301 .alloc_flags = alloc_flags, 2302 .classzone_idx = classzone_idx, 2303 .direct_compaction = true, 2304 .whole_zone = (prio == MIN_COMPACT_PRIORITY), 2305 .ignore_skip_hint = (prio == MIN_COMPACT_PRIORITY), 2306 .ignore_block_suitable = (prio == MIN_COMPACT_PRIORITY) 2307 }; 2308 struct capture_control capc = { 2309 .cc = &cc, 2310 .page = NULL, 2311 }; 2312 2313 if (capture) ^^^^^^^ Check for NULL 2314 current->capture_control = &capc; 2315 2316 ret = compact_zone(&cc, &capc); 2317 2318 VM_BUG_ON(!list_empty(&cc.freepages)); 2319 VM_BUG_ON(!list_empty(&cc.migratepages)); 2320 2321 *capture = capc.page; ^^^^^^^^ Unchecked dereference. 2322 current->capture_control = NULL; 2323 regards, dan carpenter