<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2010-05-13)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>ccj</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-14      Chris Johns <chrisj@rtems.org>

        * libblock/src/flashdisk.c: Clean up on initialisation errors.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2291&r2=text&tr2=1.2292&diff_format=h">M</a></td><td width='1%'>1.2292</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libblock/src/flashdisk.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.17&diff_format=h">M</a></td><td width='1%'>1.17</td><td width='100%'>cpukit/libblock/src/flashdisk.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2291 rtems/cpukit/ChangeLog:1.2292
--- rtems/cpukit/ChangeLog:1.2291       Fri May  7 04:07:17 2010
+++ rtems/cpukit/ChangeLog      Thu May 13 22:59:11 2010
</font><font color='#997700'>@@ -1,3 +1,7 @@
</font><font color='#000088'>+2010-05-14    Chris Johns <chrisj@rtems.org>
+
+       * libblock/src/flashdisk.c: Clean up on initialisation errors.
+<span style="background-color: #FF0000">       </span>
</font> 2010-05-07        Arnout Vandecappelle <arnout@mind.be>
 
        PR 1511/networking

<font color='#006600'>diff -u rtems/cpukit/libblock/src/flashdisk.c:1.16 rtems/cpukit/libblock/src/flashdisk.c:1.17
--- rtems/cpukit/libblock/src/flashdisk.c:1.16  Wed Feb 17 18:24:24 2010
+++ rtems/cpukit/libblock/src/flashdisk.c       Thu May 13 22:59:11 2010
</font><font color='#997700'>@@ -2478,24 +2478,6 @@
</font>       blocks += rtems_fdisk_blocks_in_device (&c->devices[device],
                                               c->block_size);
 
<font color='#880000'>-    sc = rtems_disk_create_phys(dev, c->block_size,
-                                blocks - fd->unavail_blocks,
-                                rtems_fdisk_ioctl, NULL, name);
-    if (sc != RTEMS_SUCCESSFUL)
-    {
-      rtems_fdisk_error ("disk create phy failed");
-      return sc;
-    }
-
-    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
-                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
-                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
-    if (sc != RTEMS_SUCCESSFUL)
-    {
-      rtems_fdisk_error ("disk lock create failed");
-      return sc;
-    }
-
</font>     /*
      * One copy buffer of a page size.
      */
<font color='#997700'>@@ -2513,6 +2495,32 @@
</font>     if (!fd->devices)
       return RTEMS_NO_MEMORY;
 
<font color='#000088'>+    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
+                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
+                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
+    if (sc != RTEMS_SUCCESSFUL)
+    {
+      rtems_fdisk_error ("disk lock create failed");
+      free (fd->copy_buffer);
+      free (fd->blocks);
+      free (fd->devices);
+      return sc;
+    }
+
+    sc = rtems_disk_create_phys(dev, c->block_size,
+                                blocks - fd->unavail_blocks,
+                                rtems_fdisk_ioctl, NULL, name);
+    if (sc != RTEMS_SUCCESSFUL)
+    {
+      rtems_semaphore_delete (fd->lock);
+      rtems_disk_delete (dev);
+      free (fd->copy_buffer);
+      free (fd->blocks);
+      free (fd->devices);
+      rtems_fdisk_error ("disk create phy failed");
+      return sc;
+    }
+
</font>     for (device = 0; device < c->device_count; device++)
     {
       rtems_fdisk_segment_ctl* sc;
<font color='#997700'>@@ -2524,8 +2532,15 @@
</font>       fd->devices[device].segments = calloc (segment_count,
                                              sizeof (rtems_fdisk_segment_ctl));
       if (!fd->devices[device].segments)
<font color='#000088'>+      {
+        rtems_disk_delete (dev);
+        rtems_semaphore_delete (fd->lock);
+        free (fd->copy_buffer);
+        free (fd->blocks);
+        free (fd->devices);
</font>         return RTEMS_NO_MEMORY;
<font color='#880000'>-
</font><font color='#000088'>+      }
+<span style="background-color: #FF0000">      </span>
</font>       sc = fd->devices[device].segments;
 
       for (segment = 0; segment < c->devices[device].segment_count; segment++)
<font color='#997700'>@@ -2552,13 +2567,27 @@
</font> 
     ret = rtems_fdisk_recover_block_mappings (fd);
     if (ret)
<font color='#000088'>+    {
+      rtems_disk_delete (dev);
+      rtems_semaphore_delete (fd->lock);
+      free (fd->copy_buffer);
+      free (fd->blocks);
+      free (fd->devices);
</font>       rtems_fdisk_error ("recovery of disk failed: %s (%d)",
                          strerror (ret), ret);
<font color='#880000'>-
</font><font color='#000088'>+    }
+<span style="background-color: #FF0000">    </span>
</font>     ret = rtems_fdisk_compact (fd);
     if (ret)
<font color='#000088'>+    {
+      rtems_disk_delete (dev);
+      rtems_semaphore_delete (fd->lock);
+      free (fd->copy_buffer);
+      free (fd->blocks);
+      free (fd->devices);
</font>       rtems_fdisk_error ("compacting of disk failed: %s (%d)",
                          strerror (ret), ret);
<font color='#000088'>+    }
</font>   }
 
   rtems_flashdisk_count = rtems_flashdisk_configuration_size;
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>ccj</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>Whitespace clean up.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libcsupport/src/libio_init.c.diff?r1=text&tr1=1.4&r2=text&tr2=1.5&diff_format=h">M</a></td><td width='1%'>1.5</td><td width='100%'>cpukit/libcsupport/src/libio_init.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/libcsupport/src/libio_init.c:1.4 rtems/cpukit/libcsupport/src/libio_init.c:1.5
--- rtems/cpukit/libcsupport/src/libio_init.c:1.4       Tue Sep 15 04:49:52 2009
+++ rtems/cpukit/libcsupport/src/libio_init.c   Thu May 13 23:04:25 2010
</font><font color='#997700'>@@ -61,9 +61,9 @@
</font>             rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
 
         iop = rtems_libio_iop_freelist = rtems_libio_iops;
<font color='#880000'>-   for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
-               iop->data1 = iop + 1;
-       iop->data1 = NULL;
</font><font color='#000088'>+        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
+          iop->data1 = iop + 1;
+        iop->data1 = NULL;
</font>     }
 
   /*
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>