how to fix "no free leases" issue in dhcp3?

Your dhcpd probably needs write access to the leases file.

From http://manpages.ubuntu.com/manpages/lucid/man5/dhcpd.leases.5.html:

When dhcpd is first installed, there is no lease database. However, dhcpd requires that a lease database be present before it will start. To make the initial lease database, just create an empty file called /var/lib/dhcp3/dhcpd.leases. You can do this with:

touch /var/lib/dhcp3/dhcpd.leases

This should fix your problem.